J'ai besoin d'appliquer un ensemble de commandes en R à tous les individus .txt
fichiers (environ 300) dans un répertoire.
Je ne connais pas très bien R, donc toute l'aide que j'ai consultée en ligne sur le bouclage est source de confusion, ou je ne peux pas trouver comment appliquer une boucle lorsque vous devez appliquer plusieurs commandes à chaque fichier.
Les commandes que je dois appliquer à chaque fichier (arbres phylogénétiques) dans le répertoire sont (qui utilise la bibliothèque de singes de R):
testtree <- read.tree("tree123.txt")
unrooted_tr <- unroot(testtree)
write.tree(unrooted_tr, file="unrootedtree123.txt")
Comment appliquer une boucle qui appliquera ces commandes à chaque fichier .txt individuel (en utilisant R ou dans la ligne de commande Unix)? La sortie (par exemple, unrootedtree123.txt) devra avoir un nom différent pour chaque fichier individuel.
Merci d'avance, Dani.
Vous pouvez obtenir tous les fichiers, puis boucler en utilisant lapply
et appliquer la fonction que vous souhaitez appliquer comme suit:
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)
})