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 を 1 つのラスター レイヤーの値に設定する方法です。それをしたら、自由に積み重ねることができます。

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 に答える