[R] Matrixes as data

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Fri Oct 16 17:46:11 CEST 2009


On Fri, Oct 16, 2009 at 4:36 PM, Kjetil Halvorsen
<kjetilbrinchmannhalvorsen at gmail.com> wrote:
> Hola!
>
> I am working on a problem where data points are (square) matrices. Is
> there a way to make a
> "vector" of matrices, such that it can be stored in a data.frame? Can
> that be done with S3?
> or do I have to learn S4 objects & methods?
>

 If the matrices are all the same size then you could store them in an
array, which is essentially a 3 or more dimensional matrix.

 Otherwise, you can store them in a list, and get them by number:

foo = list(matrix(1:9,3,3),matrix(1:16,4,4))
foo[[1]]
foo[[2]]

and so forth.

You'll only need to create new object classes (with S3 or S4) if you
want special behaviour of vectors of these things (such as plot(foo)
doing something sensible).

 With S3 it's easy:

class(foo)="squareMatrixVector"

plot.squareMatrixVector=function(x,y,...){
  cat("ouch\n")
}

 plot(foo)
ouch

Barry




More information about the R-help mailing list