我正在尝试从大约14000个img文件中提取相同i,j单元格的值。我已经设置了一个工作函数,它对较小的批处理执行此操作,在这些批处理中,将文件放在我的目录中是合理的,但现在我已经准备好查看较大的数据集,我陷入了困境。img文件按年组织,每38个冬天有365个单独的文件。每年冬天都有自己的文件夹(WS1978_1979data、WS1979_1980data等),每天都有自己的文件,其中包含北极地区大型卫星网格(ssmi_n_snowdepth_5day_1978307.img、ssmi_n_snowdepth_5day_1978308.img等)的积雪深度数据。从10月1日开始,一直到第二年的9月30日。我的最终希望(至少在这个阶段)是为感兴趣的单元创建一个365雪深的向量,并在数据集中每年这样做。
我可以指定适当的文件路径来生成给定年份所需的文件列表,但是当我使用函数提取所需的特定单元格时,它会在目录中查找该文件,这是错误的。你能帮帮我吗?我觉得我一定错过了一些简单的东西,但我还没有找到我需要的东西。
列出1979-1980年冬季所有文件的示例:
w1979s1980 <- as.vector(list.files(path="SnowDepth/WS1979_1980data", pattern=".img"))`函数从给定的单元格中提取该列表中所有文件的积雪深度:
cell.depthKotz <- function(depthfile){
depth.val <- c()
for(i in 1:length(depthfile)) {
depth.mat <- matrix(readBin(depthfile[i], what="integer", n=136192, size=2, endian="little"),
nrow=448, ncol=304, byrow=TRUE)
depth.val[i] <- depth.mat[187,65]
depth.val[depth.val == 110] <- NA
depth.val[depth.val == 120] <- NA
depth.val[depth.val == 130] <- NA
depth.val[depth.val == 140] <- NA
depth.val[depth.val == 150] <- NA
depth.val[depth.val == 160] <- NA
}
return(depth.val)
}然后,当我运行给定年份的函数时,可能会将其保存为向量:
Sdepths1978.1979 <- as.vector(cell.depthKotz(w1979s1980))我应该补充说,我对这一切都非常陌生,甚至知道如何表达我所要求的内容,所以如果我需要编辑标题/问题或添加更多细节,请让我知道。如果你在上面的函数中看到了这种低效,我并不担心运行时,但是如果有明显的变化,这意味着我减少了重复/手动工作,而R增加了自动化工作,请随意这么说。谢谢你的帮忙!
发布于 2018-07-12 08:04:05
在list.files函数中有一个recursive标志。
files <- list.files(path = "src", pattern = "\\.jpg$", recursive = TRUE)如果您使路径指向父目录。并添加recursive = T标志,您应该是很好的。
您可以选择更改模式,使其以$结尾,说明文件必须以此模式结尾。在极少数情况下,在名为someinfo.img.txt的目录中有另一个文件,这将被忽略。
https://stackoverflow.com/questions/51204778
复制相似问题