我需要将R中的一组命令应用于一个目录中的所有单个.txt
文件(大约300个)。
我对R不是很熟悉,所以我在网上看到的关于循环的所有帮助都令人困惑,或者当你需要对每个文件应用多个命令时,我不知道如何应用循环。
我需要应用到目录中的每个文件(系统发育树)的命令是(使用R的猿库):
testtree <- read.tree("tree123.txt")
unrooted_tr <- unroot(testtree)
write.tree(unrooted_tr, file="unrootedtree123.txt")
如何应用一个循环,将这些命令应用到每个单独的.txt文件(使用R或在Unix命令行中)?输出(例如unrotedtree123.txt)需要为每个单独的文件具有不同的名称。
提前感谢,丹妮。
您可以获取所有文件,然后使用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)
})