2010-05-24 7 views
2

Je ne peux pas sembler obtenir ce qui suit pour travaillerproblème de R avec application + rbind

directory <- "./" 
files.15x16 <- c("15x16-70d.out", "15x16-71d.out") 
data.15x16<-rbind(lapply(as.array(paste(directory, files.15x16, sep="")), FUN=read.csv, sep=" ", header=F)) 

Ce qu'il devrait accomplirez est assez simple - j'ai un nom de répertoire, certains noms de fichiers et les fichiers réels de Les données. Je colle le répertoire et les noms de fichiers ensemble, je lis les données des fichiers, puis je les relie tous ensemble en un seul bloc de données.

Sauf le résultat du lapply a les données [[]] - à savoir, l'accès se produit par l'intermédiaire a[[1]], a[[2]], etc qui rbind ne semble pas accepter.

Suggestions?

+0

Jetez un oeil sur http://stackoverflow.com/questions/2104483/how-to-read-table-multiple-files-into-a-single-table-in-r – Marek

+0

Et certains "pas exactement- le-même ": http://stackoverflow.com/questions/2209258/merge-several-data-frames-into-one-data-frame-with-a-loop, http://stackoverflow.com/questions/1562124/merge-many-data-frames-from-csv-files – Marek

Répondre

13

Utilisation do.call:

data.15x16 <- do.call(rbind, lapply(paste(directory, files.15x16, sep=""), 
             FUN=read.csv, sep=" ", header=F)) 

Vous n'avez pas besoin du as.array - il ne fait pas vraiment quoi que ce soit ici.

+0

brillant, merci; as.array était un reliquat d'utiliser apply au lieu de lapply - appliquer se plaignait de dim (X) n'étant pas positif – Carl

Questions connexes