我有一个包含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)
}
这个循环的目标是应用函数&#34; mosaicList&#34;到每个子目录中的图像。问题是,当for循环运行时,对象&#34; in.list&#34;包含与&#34; days&#34;相同的子目录。而不是在子目录中列出图像。结果它尝试同时为每个子目录运行我的函数,我得到错误
Error: cannot allocate vector of size 14.2 Gb
我是R的新手,所以我不太确定我哪里出错了。有没有人对解决这个问题有任何见解?
答案 0 :(得分:0)
循环中list.files
存在问题:
in.list <- list.files(recursive = T, full.names = F)
list.files的默认路径参数是&#34;。&#34;,这是当前目录。也许改为:
in.list <- list.files(path=days[j], recursive = T, full.names = T)
将修复。