Computes the Nitrogen Nutrition Index, the standard scalar indicator of crop N status (Lemaire & Gastal 1997). NNI = N_actual / N_c, where N_actual is the measured aboveground N concentration (% DM) and N_c is the critical N concentration derived from the species-specific dilution curve \(N_c = a \cdot W^{-b}\).
Arguments
- N_content
Aboveground N concentration as a fraction of DM (e.g. 0.025 = 2.5pct) or percentage DM (pass
is_percent = TRUE).- biomass
Aboveground dry biomass in t DM / ha (tonnes).
- crop
Crop identifier, passed to
critical_N_curve.- curve
Optional list with
aandb(and optionallyW_min) to override the default curve. Useful for custom local calibration.- is_percent
Logical. Is
N_contentsupplied as a percentage (e.g. 2.5 for 2.5pct) rather than a fraction? DefaultFALSE(fraction). Auto-detected and warned if values > 1.
Details
Interpretation:
NNI <
deficient_threshold(default 0.90): N-deficientdeficient_threshold<= NNI <=excessive_threshold(0.90 to 1.10 by default): optimal / balancedNNI >
excessive_threshold(default 1.10): luxury consumption / N-excess
All three arguments can be scalar, numeric vectors of the same length
(pixel-wise / plot-wise), or raster::RasterLayers aligned to the
same grid. If any of them is a RasterLayer, the output is a
RasterLayer; otherwise a numeric vector is returned.
References
Lemaire, G. & Gastal, F. (1997). N uptake and distribution in plant canopies. In: Lemaire G. (ed.) Diagnosis of the Nitrogen Status in Crops. Springer, Berlin.
Lemaire, G., Jeuffroy, M.-H., Gastal, F. (2008). Diagnosis tool for plant and crop N status in vegetative stage: theory and practices for crop N management. Eur. J. Agron. 28, 614-624.
Examples
if (FALSE) { # \dontrun{
# Scalar: wheat at GS30, N% = 3.2, biomass = 2.5 t/ha
compute_NNI(N_content = 3.2, biomass = 2.5, crop = "wheat",
is_percent = TRUE)
# ~ 0.94 -> slightly deficient
# Field-average maize at V8, N% = 2.8, biomass = 4 t/ha
compute_NNI(2.8, 4, crop = "maize", is_percent = TRUE)
# ~ 1.52 -> luxury consumption
# Raster (pixel-wise): N_content and biomass as RasterLayers
nni_map <- compute_NNI(N_content = n_map, biomass = w_map,
crop = "wheat", is_percent = TRUE)
} # }