Я хочу применить функцию к стеку каждого слоя и вернуть стек.
library(raster)
r1 <- raster(vals=1:20,nrow=4,ncols=5)
r2 <- raster(vals=2:21,nrow=4,ncols=5)
r3 <- raster(vals=3:22,nrow=4,ncols=5)
stk <- stack(r1,r2,r3)
func <- function(x){
calc(x,function(y){
ifelse(y>10,0,y)
})
}
Я применяю func
на каждый слой, используя lapply
lapply(stk,func)
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘calc’ for signature ‘"integer", "function"’
Кажется lapply
срез stk
как stk[1]
stk[2]
..., но фактический слой - stk[[1]]
, stk[[2]]
....
И используйте stackApply
:
stackApply(stk,indices=1:3,fun=func)
Error in FUN(newX[, i], ...) : unused argument (na.rm = na.rm)