[R] R help: Batch read files based on names in a list
arun
smartpink111 at yahoo.com
Thu May 16 07:54:48 CEST 2013
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 <dryjon at gmail.com>
To: r-help at 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 at 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.
More information about the R-help
mailing list