2013-02-20 72 views
1

我正在用光柵文件進行一些計算,特別是計算移動平均值。 我想知道熱在任何計算之前將值賦給NA。如何在計算之前用幾個柵格中的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

'files'只包含文件名,而不是在文件中的數據的特徵向量。你必須先讀取數據。 – juba 2013-02-20 12:46:46

回答

4

這是如何將NA設置爲單個柵格圖層中的值。一旦你這樣做,你可以堆放廣告libidum。

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 
+0

'RasterStack'可以被認爲是一個列表。我已經添加了一個例子。 – 2013-02-20 14:02:57

+0

這是一個匿名函數。 'x'和'y'也可以是'arg1'和'arg2'。 – 2013-02-20 17:56:53

相關問題