2013-11-04 68 views
0

我正在爲SDM類使用非常大的數據層,因此我最終將一些圖層分解爲一堆塊以避免內存限制。這些塊被寫成.grd文件,現在我需要讓它們讀回R併合並在一起。我對R的編程非常新,所以任何幫助,將不勝感激。我一直在努力,到目前爲止是這樣的:使用for循環寫入多個.g​​rd文件

merge.coarse=raster("coarseBlock1.grd") 
for ("" in 2:nBlocks){ 
    merge.coarse=merge(merge.coarse,raster(paste("coarseBlock", ".grd", sep=""))) 
} 

在我的文件是在coarseBlock.grd,並從1按順序編號到的nblocks(259)

任何反饋將不勝感激。

回答

0

我對.grd文件不太熟悉,但是這個總體過程應該至少讓你朝着正確的方向前進。假設所有的.GRD文件(1〜259)存儲在同一文件夾中(我將其稱爲GRDFolder),那麼你可以試試這個:

merge.coarse <- raster("coarseBlock1.grd") 
for(filename in list.files(GRDFolder)) 
{ 
    temp <- raster(filename) 
    merge.coarse <- rbind(merge.coarse, temp) 
} 
1

使用for循環一般是慢R.還在for循環中使用像mergerbind這樣的函數會消耗大量內存,因爲R會將值傳遞給這些函數。

更有效的方式做這個任務將調用lapply(見this tutorial on apply functions瞭解詳細信息),將文件加載到R.這將導致然後可以使用該功能rbind摺疊列表:

rasters <- lapply(list.files(GRDFolder), FUN = raster) 
merge.coarse <- do.call(rbind, rasters)