2013-02-19 37 views
26

我需要在R中將一組命令應用於目錄中的所有單個.txt文件(大約300)。循環遍歷R中的目錄中的所有文件,應用多個命令

我對R不是很熟悉,所以我在網上看到有關循環的所有幫助都是令人困惑的,或者我不知道如何在需要將多個命令應用於每個文件時應用循環。

的命令,我需要應用到目錄中的每個文件(系統進化樹)是(使用的r猿庫):

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

我該如何申請一個循環,將應用這些命令每一個人.txt文件(使用R或在Unix命令行中)?輸出(例如unrootedtree123.txt)需要爲每個單獨的文件指定一個不同的名稱。

在此先感謝, 丹妮。

+0

你有文件名的載體或做文件遵循某種命名約定(例如樹[3digitnumber])? – 2013-02-19 13:27:13

回答

47

你可以得到所有的文件,然後循環使用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) 
})