我有一个包含 365 个子目录的大目录,其中包含一年中每一天的图像。我创建了一个函数,我想将其应用于这些子目录中的每个图像。目前,这就是我所拥有的:
library(raster)
library(zebu)
#List all of the 365 sub-directories within my main directory
days <- list.files(full.names = F , recursive =F, pattern='*X2000*')
#Apply my function to each directory within "days"
for(j in 1:length(days)){
named <- paste0("full_",j)
in.list <- list.files(recursive = T, full.names = F)
stitched <- mosaicList(in.list)
writeRaster(stitched, path='D:/Scratch/DataConvert/Daymet_Data/Full/' ,
filename=named, overwrite=TRUE)
}
此循环的目标是将函数“mosaicList”应用于每个子目录中的图像。问题是,当 for 循环运行时,对象“in.list”包含与“days”相同的子目录,而不是列出子目录中的图像。结果,它尝试同时为每个子目录运行我的函数,但出现错误
Error: cannot allocate vector of size 14.2 Gb
我是 R 新手,所以我不太确定我哪里出了问题。有人对解决这个问题有任何见解吗?
有一个问题list.files
在你的循环中:
in.list <- list.files(recursive = T, full.names = F)
list.files 的默认路径参数是“.”,即当前目录。或许改成:
in.list <- list.files(path=days[j], recursive = T, full.names = T)
会修复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)