在 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
,文件名为 f1
和 f2
。它应该在工作目录中写入一个名为 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)
})
我对脚本的循环有疑问。我有不同的目录,每个目录中都有不同的文件。我的脚本同时分析了两个文件。例如,我有文件 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
,文件名为f1
和f2
。它应该在工作目录中写入一个名为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)
})