首页 > 解决方案 > list.files 考虑到 R 中的列表编号?

问题描述

我有大量文件(> 50,000)要分析。我可以得到这些文件的列表;

myfiles <- list.files(pattern="*output*")

然后循环

for (file in myfiles) {
"code"
}

问题是有时我的系统由于 RAM 过载而死机,所以剩下的唯一选择是终止 rsession 并使用相同的文件再次重新启动循环。如何修改 list.files 调用,以便我只能通过 list.files 选择一定数量的文件,例如 100:200 或 3500:5000。基本上,我想跳过在上次系统冻结之前已经分析过的文件。

任何帮助,将不胜感激。

谢谢。

标签: rloopsfor-loop

解决方案


'myfiles' 对象是一个vector. 因此,我们可以在循环时创建位置序列 ( :) 来子集对象

for (file in myfiles[100:200]) {
 ...code...
}

此外,文件可以split放入一个list长度为 100 的每个元素

lst1 <- split(myfiles, as.integer(gl(length(myfiles), 100, length(myfiles))))

然后,一个思路是循环进入parallel或者顺序,remove( rm)临时对象,调用gc()释放内存


推荐阅读