在 R 中循环目录和文件

Loop for directories and files in R

我对脚本的循环有疑问。我有不同的目录,每个目录中都有不同的文件。我的脚本同时分析了两个文件。例如,我有文件 1、文件 2、文件 3 和文件 4。我的脚本在文件 1-文件 2 中进行分析,然后我必须执行文件 1-文件 3、文件 1-文件 4 和文件 2-文件 3 等等。所以我必须不重复地分析每个文件和所有其他文件。我在做类似

的事情
dirs <- list.dirs()

for (d in dirs) {

files <- list.files()

a <- read.table("file1") ##what I have to write here? 
b <- read.table("file2")  ## and here?
dm <- dist(a, b , method = "euclidean")
write.table(dm, "file1-file2.csv")
}

我的问题是关于在列出文件 1 和文件 2(以及其他文件)之后调用它们。格式名称文件类似于“1abc_A.txt” 谢谢:)

尝试以下操作:

  • 使用lapply遍历每个目录。
  • 对于每个目录,使用 list.files.
  • 获取所有文本文件名
  • 创建 2 个文本文件的每个组合并将 dist 函数应用于每 2 个文件。
  • 写入输出。如果目录名为 A,文件名为 f1f2。它应该在工作目录中写入一个名为 A_f1_f2.csv 的文件。
dirs <- list.dirs()

lapply(dirs, function(y) {
  files <- list.files(y, pattern = '\.txt') 
  if(length(files) < 2) return(NULL)

  combn(files, 2, function(x) {
    a <- read.table(x[1]) 
    b <- read.table(x[2])
    dm <- dist(a, b , method = "euclidean")
    write.table(dm, sprintf('%s_%s.csv', basename(y), paste0(x, collapse = '_')))
  }, simplify = FALSE)
})