b.rowlingson@lancaster.ac.uk
2002-Aug-09 08:35 UTC
summary.data.frame with compound elements problem (PR#1891)
Full_Name: Barry Rowlingson Version: 1.5.0 OS: x86 linux Submission from: (NULL) (130.95.16.114) Elements of a dataframe may be a matrix or another dataframe. In this case the summary() method can do bad things:> x <- data.frame(1:10) > x$z <- data.frame(x=1:10,y=1:10) > summary(x)X1.10 z Min. : 1.00 NULL:Min. : 1.00 1st Qu.: 3.25 NULL:1st Qu.: 3.25 Median : 5.50 NULL:Median : 5.50 Mean : 5.50 NULL:Mean : 5.50 3rd Qu.: 7.75 NULL:3rd Qu.: 7.75 Max. :10.00 NULL:Max. :10.00 NULL:Min. : 1.00 NULL:1st Qu.: 3.25 NULL:Median : 5.50 NULL:Mean : 5.50 NULL:3rd Qu.: 7.75 NULL:Max. :10.00 - this comes from summary(x) calling summary(x$z) and not handling the fact that summary(x$z) has an element for each column. I think this may be a can of worms. There is a difference between: x <- data.frame(1:10,z=data.frame(1:10,1:10)) and x <- data.frame(1:10) ; x$z<-data.frame(1:10,1:10) In the first case data.frame() will take columns of the z= argument and add them to x so that x ends up with 3 elements. In the second case x ends up with two elements (although it prints as three columns with identical names for $z). Should data frames (and matrices) be allowed as elements of data frames (assuming they have the right number of rows)? If _not_, then "$<-.data.frame" should either behave like data.frame(z=...) above or disallow it, and if _so_ then summary.data.frame needs tweaking to cope. [Splus has similar behaviour, except only for data.frames in data.frames, but that's because in Splus summary(a matrix) is summary of the whole matrix and so only has one element. In R the summary() of a matrix is an element for each column. Now where's the Splus jitterbug?] Baz -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel 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-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._