Пересечение всех файлов в каталоге в 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) должно быть другое имя для каждого отдельного файла.
Спасибо заранее,
Дани.
Ответы
Ответ 1
Вы можете получить все файлы, а затем использовать цикл 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)
})