Well, as I understand it, with a list [] doesn't return the actual contents of that element of the list, whereas [[]] does. Compare, for example rnds[1] + 1 with rnds[[1]] + 1. So, with a list you have to use the double bracket notation to get to the actual contents of that element of the list, as opposed to a pointer to the element. With a vector or a matrix, [[]] doesn't seem to have much use, though you can use it with a single number, in which case you will get the same result as [].
There is a separate method for data frames, in which [[]] will give you a column. So, I think that data[[1]] is the same as data[,1]. Anyway, these rules have always worked for me, though I'm sure others can give a more sophisticated answer! On 24/10/06, Joe Byers <[EMAIL PROTECTED]> wrote: > David, > > Yes, I did. I just still do not get it. That is why I ask here. > Hoping someone knew a step by step guide that I could look at. My trial > and error approach takes me hours some days. I currently move most > things in and out of data.frames where I can name the columns and > reference with the $ and a subsetting function, but that is not always > efficient. If I could understand the [ referencing better, my code > would be more efficient and I think faster. Part of my problem is my > SAS background where everything is a flat table and coding is really > sloppy. A data step with a bunch of if-then-else to perform the > calculation where as in matrix format like in R you do things more > compactly. Not always easy to read but efficient and fast. > > I appreciate you help. > > Thank you > Joe > > > > > David Barron wrote: > > Have you tried help("["), which gives a good explanation. > > > > > > On 24/10/06, Joe W. Byers <[EMAIL PROTECTED]> wrote: > >> Hi all, > >> > >> I would greatly appreciate some help understanding how R references > >> arrays, matrices, lists, and objects using [[]] and []. I have read the > >> R guides and several tutorials but I am not the fastest kid on the block > >> so I am still having difficulty understanding this. For examples the > >> 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. > >> > >> I could use some help in knowing when to use [[]] referencing and when > >> to use [] referencing. If there is a really good book, webpage, or link > >> with explanation and examples I would appreciate you forwarding the the > >> citation. > >> > >> Thank you > >> Joe > >> > >> ______________________________________________ > >> R-help@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. > >> > > > > > > > -- ================================= David Barron Said Business School University of Oxford Park End Street Oxford OX1 1HP ______________________________________________ R-help@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.