[Rd] several bugs (PR#918) lists and matrices

Robert Gentleman rgentlem@jimmy.harvard.edu
Mon, 23 Apr 2001 14:12:20 -0400


On Mon, Apr 23, 2001 at 01:57:32PM -0400, Rich Heiberger wrote:
> ## Thomas rightly points out that list() is not the best structure for
> ## homogeneous data.  My example was the simplest that generated the
> ## error of a matrix structure that that doesn't work.  The application
> ## that this is simplified from needs lists because the data isn't
                                                          data aren't (?)
> ## homogeneous.  I am attempting to write a missing value class, where
> ## each item is a list.  In the simplest instance, if the datum is missing
> ## then the attribute contains the reason.
> ## 
> ## Both of the 'bugs'/'unimplemented features'
> ## 3. a <- matrix(list(1,2,3,4,5,6), 2, 3)
> ## 6. bug in "[" for lists
> ## show up in this example.  Thus
> 
> x <- list(1,2,3,4,5,6)
> dim(x) <- c(2,3)
> x[[2,3]] <- NA
> attr(x[[2,3]],"mv") <- "absent"
> x
> for(i in x) print(i)
> x[2,]
> x[1,1]
> x[2,3]


  Yes, it appears to be either a bug or perhaps an unimplemented
  feature (or possibly an unimplemented bug). The problem with the S
  version of this is that the following doesn't work the same as the
  above (I might argue that it should)
> x<-matrix(1:6,nc=3)
> x
     [,1] [,2] [,3] 
[1,]    1    3    5
[2,]    2    4    6
> x[[2,3]]<-NA
> x
     [,1] [,2] [,3] 
[1,]    1    3    5
[2,]    2    4   NA
> attr(x[[2,3]],"mv") <- "absent"
> for(i in x) print(i)
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] NA

  I am uncertain as to why you want to put dimensions on a list? It
  doesn't make it a matrix. That said we can duplicate the behaviour
  but I'm not sure that it is worth introducing the confusion that
  ought to follow.

  For my favorite silly example:
> dim(mean)<-c(2,2) 
Warning messages:
  assigning "mean" masks an object of the same name on database 2
> mean
           [,1] [,2] 
[1,] missing, 0     
[2,] 0          {, 5
attr(, "names"):
[1] "x"     "trim"  "na.rm" ""     
> is.matrix(mean)
[1] T
> mean(1:10)
[1] 5.5
> 
    Just because you can does not necessarily mean that you should.

> 
> Rich
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> 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
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

-- 
+---------------------------------------------------------------------------+
| Robert Gentleman                 phone : (617) 632-5250                   |
| Associate Professor              fax:   (617)  632-2444                   |
| Department of Biostatistics      office: M1B28
| Harvard School of Public Health  email: rgentlem@jimmy.dfci.harvard.edu   |
+---------------------------------------------------------------------------+
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._