41

我需要将 R 中的一组命令应用于.txt目录中的所有单个文件(大约 300 个)。

我对 R 不是很熟悉,所以我在网上看到的关于循环的所有帮助都令人困惑,或者当您需要对每个文件应用多个命令时,我无法弄清楚如何应用循环。

我需要应用于目录中每个文件(系统发育树)的命令是(使用 R 的猿库):

testtree <- read.tree("tree123.txt")
unrooted_tr <- unroot(testtree)
write.tree(unrooted_tr, file="unrootedtree123.txt")

如何应用一个循环,将这些命令应用于每个单独的 .txt 文件(使用 R 或在 Unix 命令行中)?输出(例如 unrootedtree123.txt)需要为每个单独的文件具有不同的名称。

在此先感谢,丹妮。

4

1 回答 1

86

您可以获取所有文件,然后循环使用lapply并应用您想要应用的任何功能,如下所示:

files <- list.files(path="path/to/dir", pattern="*.txt", full.names=TRUE, recursive=FALSE)
lapply(files, function(x) {
    t <- read.table(x, header=TRUE) # load file
    # apply function
    out <- function(t)
    # write to file
    write.table(out, "path/to/output", sep="\t", quote=FALSE, row.names=FALSE, col.names=TRUE)
})
于 2013-02-19T13:28:46.867 回答