2013-02-13 56 views
0

我有12個二進制(光柵)文件。 我想計算12個文件中每個像素的12個值的移動平均值。如何將一個向量的簡單代碼應用於多個柵格?

對於一個簡單的載體,我們可以利用這個得到均線:

  x <- c(1,2,3,NA,NA,4,6,5,6,4,2,5) 
     movingmean <- rollapply(x, 3, FUN = mean, na.rm = T,fill=NA) 

現在我想要做相同,但與柵格和我想:

files <- list.files("C:final-2010", "*.envi", full.names = TRUE) 
results <- list() 
for (.files in files) { 
    # read in the 12 files as a vector of numbers 
    # that we take the average of 
    x <- do.call(rbind,(lapply(.files, readBin , double() , 
        size = 4 ,n =1440 * 720 , signed = T))) 
    # take the moving average across the 12 values 
    # from the 12 files for each pixel 
    results[[length(results) + 1L]] <- rollapply(x, 3, FUN = mean,na.rm = T) 
} 

但得到這個錯誤:

Error in seq.default(start.at, NROW(data), by = by) : 
          wrong sign in 'by' argument 

回答

1

也許這樣的事情會工作

results <- overlay(stack(files), fun=function(x) 
        movingFun(x, fun=mean, n=3, na.rm=TRUE)) 
+0

這是正確的。閱讀移動的幫助 – RobertH 2013-02-16 07:17:06

+1

嗯,我認爲@羅伯特H是羅伯特Hijmans,他寫了你使用的''raster'包,所以非常熟悉代碼的作用!看看'moveFun'的默認參數。你將返回12個柵格。第一個將平均值的柵格-1,1,2,然後1,2,3,結束於11,12,13。由於-1和13不存在,所以這些值將是「NA」,但是我們有'na.rm = TRUE',這意味着第一個和最後一個將分別是柵格1和2以及11和12的平均值。如果你想要不同的東西閱讀文檔! – 2013-02-19 15:08:52

相關問題