I need to apply a set of commands in R to all the individual .txt
files (around 300) in a directory.
I'm not very familiar with R, so all the help I've looked at online about looping is confusing, or I can't work out how to apply a loop when you need to apply multiple commands to each file.
The commands I need to apply to each file (phylogenetic trees) within the directory are (which uses R's ape library):
testtree <- read.tree("tree123.txt")
unrooted_tr <- unroot(testtree)
write.tree(unrooted_tr, file="unrootedtree123.txt")
How do I apply a loop which will apply these commands to each individual .txt file (either using R or in the Unix command line)? The output (e.g. unrootedtree123.txt) will need to have a different name for each individual file.
Thanks in advance, Dani.
You can get all the files and then loop using lapply
and apply whatever function you want to apply as follows:
files <- list.files(path="path/to/dir", pattern="*.txt", full.names=TRUE, recursive=FALSE)
lapply(files, function(x) {
t <- read.table(x, header=TRUE) # load file
# apply function
out <- function(t)
# write to file
write.table(out, "path/to/output", sep="\t", quote=FALSE, row.names=FALSE, col.names=TRUE)
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With