. Nach dieser Frage (Find second highest value on a raster stack in R), wie kann man für jede xy-Koordinate des Rasterstapels den Namen der Ebene finden, die den zweithöchsten Wert enthält?Finden Sie Layernamen für die zweithöchsten Werte in einem Rasterstapel in R
Ich bin in der Lage, den Namen (Schichtnummer) der Schicht zu finden, den höchsten Wert mit einer „which.max()“ Funktion enthält:
set.seed(123)
require(raster)
r1 <- raster(nrows = 10, ncols = 10)
r2 <- r3 <- r4 <- r1
r1[] <- runif(ncell(r1))
r2[] <- runif(ncell(r1)) + 0.2
r3[] <- runif(ncell(r1)) - 0.2
r4[] <- runif(ncell(r1))
rs <- stack(r1, r2, r3, r4)
which.max.na <- function(x, ...) ifelse(length(x) == sum(is.na(x)), 0, which.max(x))
m1 <- calc(rs, which.max.na)
plot(m1)
Doch wie kann ich ein Raster erhalten mit die Namen (Layer-Nummern) mit den zweithöchsten Werten?
habe ich versucht, die Lösung in (How to find second highest value and corresponding layer name in a raster stack in R):
m2 <- calc(rs, fun=function(x, na.rm) x[order(x, decreasing=T)[2]]) & calc(rs, fun=function(x, na.rm) order(x, decreasing=T)[2])
plot(m2)
aber ohne Erfolg als plot(m2)
zeigt ..
Es funktioniert perfekt, danke! – Marc