Skip to content

two dimensional array of object elements

4 messages · Weijie Cai, Gabor Grothendieck, Tony Plate

#
Hi list,

I want to create a two (possibly three) dimensional array of objects. These 
objects are classes in object oriented style. I failed by using
a<-array(NA,c(m,n))
for (i in 1:m){
  for (j in 1:n){
    a[i,j]<-My.Obj
  }
}

The elements are still NA. Any suggestions?

Thanks
#
Weijie Cai <wcai11 <at> hotmail.com> writes:

: 
: Hi list,
: 
: I want to create a two (possibly three) dimensional array of objects. These 
: objects are classes in object oriented style. I failed by using
: a<-array(NA,c(m,n))
: for (i in 1:m){
:   for (j in 1:n){
:     a[i,j]<-My.Obj
:   }
: }
: 

A list that has a dim attribute should do it:

R> x <- list(12, "abc", 3i, sin)
R> dim(x) <- c(2,2)
R> x
     [,1]  [,2]
[1,] 12    0+3i
[2,] "abc" ?   
R> x[[2,2]](pi/180)
[1] 0.01745241
#
Create your original matrix as a list datatype.  When assigning elements, 
be careful with the list structure, as the example indicates.

 > m <- 2; n <- 3
 > a <- array(list(),c(m,n))
 > a[1,2] <- list(b=1,c=2)
Error in "[<-"(`*tmp*`, 1, 2, value = list(b = 1, c = 2)) :
         number of items to replace is not a multiple of replacement length
 > a[1,2] <- list(list(b=1,c=2))
 >
At Friday 11:36 AM 2/11/2005, Weijie Cai wrote:
#
Tony Plate <tplate <at> acm.org> writes:

: 
: Create your original matrix as a list datatype.  When assigning elements, 
: be careful with the list structure, as the example indicates.
: 
:  > m <- 2; n <- 3
:  > a <- array(list(),c(m,n))
:  > a[1,2] <- list(b=1,c=2)
: Error in "[<-"(`*tmp*`, 1, 2, value = list(b = 1, c = 2)) :
:          number of items to replace is not a multiple of replacement length

Try:

a[[1,2]] <- list(b=1,c=2)


:  > a[1,2] <- list(list(b=1,c=2))
:  >
:
: At Friday 11:36 AM 2/11/2005, Weijie Cai wrote:
: >Hi list,
: >
: >I want to create a two (possibly three) dimensional array of objects. 
: >These objects are classes in object oriented style. I failed by using
: >a<-array(NA,c(m,n))
: >for (i in 1:m){
: >  for (j in 1:n){
: >    a[i,j]<-My.Obj
: >  }
: >}
: >
: >The elements are still NA. Any suggestions?