[R] rapply on a data.frame

Michael Hoffman b3i4old02 at sneakemail.com
Sun Feb 24 21:44:48 CET 2008


Is it possible to get something like rapply for a data.frame? For 
example, if I do this:

 > x <- list(a=mtcars, b=mtcars)
 > str(rapply(x, nrow, classes="data.frame", how="replace"))
List of 2
  $ a:List of 11
   ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
   ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
   ..$ disp: num [1:32] 160 160 108 258 360 ...
   ..$ hp  : num [1:32] 110 110 93 110 175 105 245 62 95 123 ...
   ..$ drat: num [1:32] 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
   ..$ wt  : num [1:32] 2.62 2.88 2.32 3.21 3.44 ...
   ..$ qsec: num [1:32] 16.5 17.0 18.6 19.4 17.0 ...
   ..$ vs  : num [1:32] 0 0 1 1 0 1 0 1 1 1 ...
   ..$ am  : num [1:32] 1 1 1 0 0 0 0 0 0 0 ...
   ..$ gear: num [1:32] 4 4 4 3 3 3 3 4 4 4 ...
   ..$ carb: num [1:32] 4 4 1 1 2 1 4 2 2 4 ...
  $ b:List of 11
   ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
   ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
   ..$ disp: num [1:32] 160 160 108 258 360 ...
   ..$ hp  : num [1:32] 110 110 93 110 175 105 245 62 95 123 ...
   ..$ drat: num [1:32] 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
   ..$ wt  : num [1:32] 2.62 2.88 2.32 3.21 3.44 ...
   ..$ qsec: num [1:32] 16.5 17.0 18.6 19.4 17.0 ...
   ..$ vs  : num [1:32] 0 0 1 1 0 1 0 1 1 1 ...
   ..$ am  : num [1:32] 1 1 1 0 0 0 0 0 0 0 ...
   ..$ gear: num [1:32] 4 4 4 3 3 3 3 4 4 4 ...
   ..$ carb: num [1:32] 4 4 1 1 2 1 4 2 2 4 ...

I was hoping to get something like list(a=11, b=11). I suspect this is 
because the data.frame is actually implemented as a list.



More information about the R-help mailing list