如何在计算之前用几个栅格中的NA替换某些值?

时间:2013-02-20 12:16:07

标签: r raster

我正在用光栅文件进行一些计算。我特别计算移动平均线。 我想知道很热,在任何计算之前为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))

没有错误,但是当我查看结果时,我发现没有任何改变。

1 个答案:

答案 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)

enter image description here

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