我正试图从〜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则进行了更多的自动化工作,请随意说。感谢您的帮助!
答案 0 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ViewActivitydiv">test</div>
函数中有一个recursive
标志。
list.files
如果将路径指向父目录。并添加files <- list.files(path = "src", pattern = "\\.jpg$", recursive = TRUE)
标志,您应该会很好。
(可选)您可以将模式更改为以recursive = T
结尾,表明文件必须以该模式结尾。在极少数情况下,在目录$
中还有另一个文件,将被忽略。