通过每个文件对R的函数循环

时间:2018-02-01 14:01:09

标签: r

我有多个.txt文件对,看起来像这样:

file1_a.txt
file1_b.txt
file2_a.txt
file2_b.txt

它们包含我想用我创建的函数进一步分析的信息。在脚本中,我需要一起分析每个文件对(通过“file1”和“file2”链接在一起)。

你如何使用for循环(或apply-family)循环遍历每个文件对,为每个文件对运行函数?

这个问题与找到here的问题并不完全相同,因为我希望使用文件对。

在虚拟代码中:

files <- list.files(pattern = "*.txt")

for(file_pairs in files){
  function(file1, file2)
}

file_pairs部分是我不确定的部分,因为我不知道如何识别它们并让它在具有相似名称的文件上运行。

1 个答案:

答案 0 :(得分:1)

假设文件的命名是一致的,也许这样的东西。

library(stringr)

files <- c('file1_a.txt', 'file1_b.txt', 'file2_a.txt','file2_b.txt')

unique.files <- unique(gsub('(.+)_[a-z].txt','\\1',files))

my.list <- vector('list',length(unique.files))
for(f in seq_along(unique.files)){
  files.sub <- str_detect(files, unique.files[f])
  files.to.do.stuff <- files[files.sub]
  my.list[[f]] <- files.to.do.stuff
}

my.list
#[[1]]
#[1] "file1_a.txt" "file1_b.txt"
#
#[[2]]
#[1] "file2_a.txt" "file2_b.txt"