HI, You could use: (# with 3 files in my folder) lfiles<-list.files(pattern=".txt") lfiles #[1] "file1.txt" "file2.txt" "file3.txt" lst1<-lapply(lfiles,function(x) read.table(x,header=TRUE,sep="",stringsAsFactors=FALSE)) lst1 #[[1]] # col1 col2 #1 1 0.5 #2 2 0.2 #3 3 0.3 #4 4 0.3 #5 5 0.1 #6 6 0.2 # #[[2]] # col1 col3 #1 1 A #2 2 B #3 3 C # #[[3]] # col1 col4 #1 1 0.1 #2 2 0.5 #3 4 0.9 library(plyr) join_all(lst1,by="col1") # col1 col2 col3 col4 #1 1 0.5 A 0.1 #2 2 0.2 B 0.5 #3 3 0.3 C NA #4 4 0.3 <NA> 0.9 #5 5 0.1 <NA> NA #6 6 0.2 <NA> NA
join_all(lst1,by="col1",type="inner") # col1 col2 col3 col4 #1 1 0.5 A 0.1 #2 2 0.2 B 0.5 #or Reduce(function(...) merge(...,all=TRUE),lst1) # col1 col2 col3 col4 #1 1 0.5 A 0.1 #2 2 0.2 B 0.5 #3 3 0.3 C NA #4 4 0.3 <NA> 0.9 #5 5 0.1 <NA> NA #6 6 0.2 <NA> NA #Suppose you don't want to read "file3.txt" lfilesSub<-lfiles[!lfiles%in% "file3.txt"] lfilesSub #[1] "file1.txt" "file2.txt" A.K. ----- Original Message ----- From: Jonathan Dry <dry...@gmail.com> To: r-help@r-project.org Cc: Sent: Wednesday, May 15, 2013 1:51 PM Subject: [R] R help: Batch read files based on names in a list * I am currently reading in a series of files, applying the same functions to them one at a time, and then merging the resulting data frames e.g.: >MyRows <- c("RowA", "RowB", "RowC")>>File1_DF <- >read.delim("\\\\DirectoryToFiles\\File1_Folder\\File1.txt", >stringsAsFactors=FALSE, check.names=FALSE)>File1_DF <- >as.data.frame(t(File1_DF[MyRows,]))>File1_DF <- >as.data.frame(t(File1_DF))>mergeDF <- merge(mergeDF,File1_DF, by.x = >"Row.names", by.y="row.names")>>File2_DF <- >read.delim("\\\\DirectoryToFiles\\File2_Folder\\File2.txt", >stringsAsFactors=FALSE, check.names=FALSE)>File2_DF <- >as.data.frame(t(File2_DF[MyRows,]))>File2_DF <- >as.data.frame(t(File2_DF))>mergeDF <- merge(mergeDF,File2_DF, by.x = >"Row.names", by.y="row.names") ...etc I want to know if I can use a list of the filenames c("File1", "File2", "File2") etc. and apply a function to do this in a more automated fasion? This would involve using the list value in the directory path to read in the file i.e. >*MyFilesValue*_DF <- >read.delim("\\\\DirectoryToFolders\\*MyFilesValue*_Folder\\*MyFilesValue*.txt", > stringsAsFactors=FALSE, check.names=FALSE) Any help appreciated * [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.