[R] Combining many dataframes from listings of objects?
Bill.Venables@cmis.csiro.au
Bill.Venables at cmis.csiro.au
Wed May 15 15:38:49 CEST 2002
Derek Eder asks:
>
>
> I want to combine (rbind) many dataframes into a single data frame, but
"automatically" specifying the names of the dataframes as listing of object
names.
>
> E.g., combine these 18 df objects into one big df using something
conceptually like this :
>
> rbind(objects(pattern="*.df"))
>
> ...
>
> > objects(pattern="*.df")
> [1] "BA.Nt1.nREM.APNEA.MIXED.bp.df"
"BA.Nt1.nREM.APNEA.OBSTRUCTIVE.bp.df"
> [3] "BA.Nt1.nREM.HYPOPNEA.bp.df" "BA.Nt1.REM.HYPOPNEA.bp.df"
> [5] "BA.Nt2.nREM.APNEA.MIXED.bp.df"
"BA.Nt2.nREM.APNEA.OBSTRUCTIVE.bp.df"
> [7] "BA.Nt2.nREM.HYPOPNEA.bp.df"
"BA.Nt2.REM.APNEA.OBSTRUCTIVE.bp.df"
> [9] "BA.Nt2.REM.HYPOPNEA.bp.df" "BF.Nt1.nREM.APNEA.MIXED.bp.df"
>
>
[WNV] This is a natural do.call problem, but you need to be a bit
careful. The second argument has to be a list either of the arguments
themselves or names that evaluate to the arguments. The obvious choice here
is names. The following is a mock example with hints of yours.
> a.df <- b.df <- c.df <- data.frame(x = 1:3, y = letters[1:3])
> a.df
x y
1 1 a
2 2 b
3 3 c
> do.call("rbind", lapply(objects(pat="*.df$"), as.name))
x y
1 1 a
2 2 b
3 3 c
4 1 a
5 2 b
6 3 c
7 1 a
8 2 b
9 3 c
>
> By the way in S. I used to do this by creating a large empty target
dataframe and then
> looping through the list of objects, write each one into the target. This
is failing in R:
>
> > target_as.data.frame(matrix(data=NA,nrow=8,ncol=14))
> > target[1:4,]__c("a","b","c","d")
>
> > Warning messages:
> 1: invalid factor level, NAs generated in: "[<-.factor"(*tmp*, iseq, value
= vjj)
> 2: invalid factor level, NAs generated in: "[<-.factor"(*tmp*, iseq, value
= vjj)
> 3: invalid factor level, NAs generated in: "[<-.factor"(*tmp*, iseq, value
= vjj)
> 4: invalid factor level, NAs generated in: "[<-.factor"(*tmp*, iseq, value
= vjj)
> . . .
>
>
> Thank you
>
>
> Derek N. Eder
> Göteborgs Universitet
> Institutionen för klinisk neurovetenskap - psykiatri
> Sahlgrenska universitetssjukhuset SS/SU
> Blå straket 17b
> SE 413 45 Göteborg
> Sverige
> Tlf. +46 (031) 34 2-6139 (office)
> Tlf. +46 (031) 34 2-1283 (laboratory)
> Tlf. +46 0709 / 7 2-1283 (mobil)
> Fax. +46 (031) 82 81 63
> derek.eder at neuro.gu.se
>
>
> Gothenburg University
> Institute of Clinical Neuroscience,
> Section for Psychiatry
> Salhgrenska Hospital SU/SS
> SE 413 45 Göteborg
> Sweden
>
>
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
-.-
> r-help mailing list -- Read
http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
>
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
_._
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list