我想根据特定订单处理我的文件。例如,文件名中有一个ID,我想按照以下顺序处理它们:
order <- c("5521","6572","9882","6583")
文件:
6572.txt
5521.bww.txt
6583.rrrwe.txt
9882.tw.txt
files <- list.files()
filelist <- lapply(files, function)
names(filelist) <- paste0(basename((files)))
然后我想根据“订单”进行处理但仍然循环遍历所有文件
我试过循环和grep,但我不认为这是个好主意:
for(i in 1:length(names(filelist))) {
grep(order[i]..)
(FUNCTION)
}
答案 0 :(得分:1)
您需要根据order
向量对文件列表进行排序。在您的示例中,order
向量包含没有扩展名的basename。您需要以类似方式格式化文件列表。
files <- list.files()
file_no_ext <- sub("^([^.]*).*", "\\1", files))
然后获取file_no_ext
中的元素与 order
匹配的索引。使用这些索引重新排序原始files
列表。
files <- files[ match(order,file_no_ext) ]
lapply(files, yourFun)
希望这有帮助。如果没有,请告诉我。
修改强>
您可以使用pmatch
files <- files[ pmatch(order, files) ]