我正在用光栅文件进行一些计算。我特别计算移动平均线。 我想知道很热,在任何计算之前为NA分配值。
Here is the code :
files <- list.files("C:final-2010", "*.envi", full.names = TRUE)
files[round(files,3) == -339999995214436420000000000000000000000.000 ] <- NA
d1 <- overlay(stack(files ),fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE))
但我收到了一个错误:
Error in round(files, 3) : Non-numeric argument to mathematical function
我也尝试了这个:
f=stack(files)
f[round(f,3) == -339999995214436420000000000000000000000.000 ] <- NA
movi <- overlay(stack(f),fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE))
没有错误,但是当我查看结果时,我发现没有任何改变。
答案 0 :(得分:4)
这是将NA设置为单个栅格图层中的值的方法。一旦你这样做,你可以叠加自由的比赛。
library(raster)
r1 <- raster(nrows=108, ncols=21, xmn=0, xmx=10)
r1[] <- runif(ncell(r1))
par(mfrow = c(1, 2))
plot(r1)
r1[500:1000] <- NA
plot(r1)
r <- stack(r1, r1, r1)
x <- list(c(100, 300), c(400, 600), c(800, 1000))
s <- mapply(FUN = function(x, y) {
y[x[1]:x[2]] <- NA
y
}, x = x, y = r)
plot(stack(s)) # not shown here