循环遍历R中的目录中的所有文件,应用多个命令
我需要在R中将一组命令应用到目录中的所有单个.txt
文件(大约300)。
我对R不是很熟悉,所以我在网上看到有关循环的所有帮助都是令人困惑的,或者当您需要将多个命令应用于每个文件时,我无法弄清楚如何应用循环。
我需要应用到目录内的每个文件(系统发育树)的命令是(它使用R的ape库):
testtree <- read.tree("tree123.txt") unrooted_tr <- unroot(testtree) write.tree(unrooted_tr, file="unrootedtree123.txt")
我如何应用一个循环,将这些命令应用到每个单独的.txt文件(使用R或在Unix命令行中)? 输出(例如unrootedtree123.txt)将需要为每个单独的文件具有不同的名称。
在此先感谢,丹妮。
您可以获取所有文件,然后使用lapply
进行循环,然后应用您想要应用的任何函数,如下所示:
files <- list.files(path="path/to/dir", pattern="*.txt", full.names=T, recursive=FALSE) lapply(files, function(x) { t <- read.table(x, header=T) # load file # apply function out <- function(t) # write to file write.table(out, "path/to/output", sep="\t", quote=F, row.names=F, col.names=T) })