[R] Help with understanding [[]] [] array, list, matrix referencing

Joe Byers joe-byers at utulsa.edu
Wed Oct 25 17:52:40 CEST 2006


I want to thank everyone for their comments and suggestions.  P. Burns' 
S Poetry I think will be a lot of help and I thought it was really 
poetry:).  So will the other references that were provided by I believe 
Mr Kane.  The other replies provided me some great insights.

If I understand R uses the $ and [[]] like java uses the . (dot) 
notation for accessing components of classes and objects.  If the java 
class or object being accessed by the . notation is specifically a list, 
container, vector, or array type you use the element operator which is 
the parenthesis in java but R uses [].

This helps be visualize what I am trying to do if I am correct with my 
interpretation.

Thank all of you so much.
Joe


Thomas Lumley wrote:
> On Tue, 24 Oct 2006, Joe W. Byers wrote:
>> following code produces a 5 element list of 2X5 random numbers that I
>> then convert to a 2X5X5 matrix.
>> cov<-matrix(c(.4,-.1,-.1,.3),nrow=2,ncol=2)
>> rnds<-NULL;
>> for (i in 1:5){
>> 	t1<-rnorm(5,cov)
>> 	t2<-rnorm(5,cov)
>> 	t3<-rbind(t1,t2)
>> 	rnds[i]<-list(t3)
>> }
>>
>> rnds.matrix<-array(unlist(rnds),dim=c(2,5,5));
>>
>> To access the matrix rnds.matrix I use rnds.matrix[x,y,z].  This I
>> understand.
>>
>> To access the list I user [[z]][x,y].  This I do not understand.  I
>> found by chance this reference notation in an old mailing list that
>> helped me.
>>
> 
> Yes, this can be confusing.  One reason that it is confusing is that the 
> rules appear to be different (though they aren't) for vectors and lists.
> 
> The single bracket [ extracts a subvector, and the double bracket [[ 
> extracts an element.  That is, with
>   a<-list(b=1,c=2,d=3)
> you can extracts the first element of a,
>> a[[1]]
> [1] 1
> or a sublist with the first two elements
>> a[1:2]
> $b
> [1] 1
> 
> $c
> [1] 2
> or a sublist with just the first element
>> a[1]
> $b
> [1] 1
> 
> The same is true for numeric or character vectors, but there an element 
> and a subvector of length one are the same, so the distinction between [[ 
> and [ is harder to understand.
>> b<-1:10
>> b[1:2]
> [1] 1 2
>> b[1]
> [1] 1
>> b[[1]]
> [1] 1
> 
>  	-thomas
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list