1

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

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

4

1 回答 1

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
于 2013-02-20T13:43:34.243 回答