簡體   English   中英

如何從R中各個子文件夾中包含的文件堆疊單個柵格圖層?

[英]How to stack individual raster layers from files contained in individual subfolders in R?

我正在使用柵格圖層。 我在父文件夾中有10個子文件夾。 每個子文件夾包含數百個柵格。 我想為每個子文件夾應用一個腳本,並為每個子文件夾創建幾個堆棧。

#List all my subfolders in my parent folder
list_dirs<- list.dirs(path/parentfolder/, recursive = F) 

for (i in list_dir){

# set the working directory to the subfolder i
setwd(i) 

# List all the files with a certain pattern in the subfolder i
s<- list.files(path=setwd(i), pattern = "cool", recursive=F)

# I do not see how I can create a stack for each of my subfolders here.
#I should have an index i somewhere in the last line.

ss<- stack(s)

}

作為最終輸出,我希望有10個堆棧對應於我的10個子文件夾中的每一個。 我是R.的新人。謝謝!

您通常應該使用列表來進行此類操作。 您可以將每個堆棧添加為循環中的列表元素。

stack.list <- list()
for (i in 1:length(list_dirs)){
  s <- list.files(path=list_dirs[i], pattern = "cool", recursive=F, full.names = TRUE)
  stack.list[[i]] <- stack(s)
  }

或者,如果要跟蹤哪個列表元素對應哪個文件夾,可以使用:

stack.list[[basename(list_dirs)[i]]] <- stack(s)

如果您願意,可以使用lapply選項,但實際上只是dww答案的不同版本:

list_dirs <- list.dirs("path/parentfolder/", recursive = F)

names(list_dirs) <- basename(list_dirs)

raster.list <- lapply(list_dirs, function(dir) {
  stack(list.files(dir, pattern = "cool", full.names = T, recursive = F))
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM