Подтвердить что ты не робот

Пересечение всех файлов в каталоге в 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) должно быть другое имя для каждого отдельного файла.

Спасибо заранее, Дани.

4b9b3361

Ответ 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)
})