2013-02-19 9 views
26

Potrzebuję zastosować zestaw poleceń w R do wszystkich pojedynczych plików .txt (około 300) w katalogu.Zapętlając wszystkie pliki w katalogu w R, stosując wiele komend

Nie jestem bardzo zaznajomiony z R, więc cała pomoc, którą przyjrzałem się w Internecie, na temat pętli, jest myląca, lub nie mogę się dowiedzieć, jak zastosować pętlę, gdy trzeba zastosować wiele poleceń do każdego pliku .

Komendy muszę zastosować do każdego pliku (drzewa filogenetyczne) w katalogu są (który wykorzystuje ape bibliotekę R'S):

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

Jak mogę zastosować pętlę, która będzie stosować te polecenia do każdej osoby .txt (używając R lub linii poleceń Unix)? Dane wyjściowe (na przykład unrootedtree123.txt) będą musiały mieć inną nazwę dla każdego pliku.

Z góry dziękuję, Dani.

+0

masz wektor nazwach czy pliki wykonaj jakąś konwencję nazewnictwa (np. drzewo [3digitnumber])? –

Odpowiedz

47

Możesz pobrać wszystkie pliki, a następnie pętla przy użyciu lapply i stosować niezależnie od funkcji, którą chcesz zastosować w następujący sposób:

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) 
}) 
Powiązane problemy