Dear list, I have to use a list of lists containing vectors. For instance : [[1]] [[1]][[1]] [1] 1 2 3 [[1]][[2]] [1] 3 2 1 I want to attribute vectors to the main list without use of an intermediate list, but it does not work : x <- list() x[[1]][[1]] <- c(1, 2, 3) x[[1]][[2]] <- c(3, 2, 1) Thanks in advance, Carlos
On Aug 9, 2010, at 12:57 PM, Carlos Petti wrote:> Dear list, > > I have to use a list of lists containing vectors. > > For instance : > > [[1]] > [[1]][[1]] > [1] 1 2 3 > > [[1]][[2]] > [1] 3 2 1 > > I want to attribute vectors to the main list > > without use of an intermediate list, > > but it does not work :More specifically it produces an error that has information in it. > x[[1]][[1]] <- c(1, 2, 3) Error in `*tmp*`[[1]] : subscript out of bounds> > x <- list() > x[[1]][[1]] <- c(1, 2, 3) > x[[1]][[2]] <- c(3, 2, 1)So thinking perhaps we just needed another level of subscripting "available" I tried: > x <- list(list()) > x[[1]][[1]] <- c(1, 2, 3) > x[[1]][[2]] <- c(3, 2, 1) > x [[1]] [[1]][[1]] [1] 1 2 3 [[1]][[2]] [1] 3 2 1 Success. Moral: Read the error messages for meaning or at least clues. (Further testing showed that almost anything inside the original list() call, even NULL, would have created enough structure for the interpreter to work with.>David Winsemius, MD West Hartford, CT
Is this what you want:> x <- list() > x[[1]] <- list(1:3) > x[[2]] <- list(3:1) > x[[1]] [[1]][[1]] [1] 1 2 3 [[2]] [[2]][[1]] [1] 3 2 1 On Mon, Aug 9, 2010 at 12:57 PM, Carlos Petti <carlos.petti at gmail.com> wrote:> Dear list, > > I have to use a list of lists containing vectors. > > For instance : > > [[1]] > [[1]][[1]] > [1] 1 2 3 > > [[1]][[2]] > [1] 3 2 1 > > I want to attribute vectors to the main list > > without use of an intermediate list, > > but it does not work : > > x <- list() > x[[1]][[1]] <- c(1, 2, 3) > x[[1]][[2]] <- c(3, 2, 1) > > Thanks in advance, > Carlos > > ______________________________________________ > R-help at r-project.org 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
---------- Forwarded message ---------- From: Carlos Petti <carlos.petti at gmail.com> Date: 2010/8/10 Subject: Re: [R] List of lists ? To: David Winsemius <dwinsemius at comcast.net> Thanks for answer. I read the error messages but I did not find the solution :-( Your solution works. But, a new problem remains because I want to use the list of lists as follows : x <- list(list()) x[[2]][[1]] <- c(1, 2, 3) x[[2]][[2]] <- c(3, 2, 1) Thanks in advance, Carlos 2010/8/9 David Winsemius <dwinsemius at comcast.net>:> > On Aug 9, 2010, at 12:57 PM, Carlos Petti wrote: > >> Dear list, >> >> I have to use a list of lists containing vectors. >> >> For instance : >> >> [[1]] >> [[1]][[1]] >> [1] 1 2 3 >> >> [[1]][[2]] >> [1] 3 2 1 >> >> I want to attribute vectors to the main list >> >> without use of an intermediate list, >> >> but it does not work : > > More specifically it produces an error that has information in it. >> x[[1]][[1]] <- c(1, 2, 3) > Error in `*tmp*`[[1]] : subscript out of bounds > >> >> x <- list() >> x[[1]][[1]] <- c(1, 2, 3) >> x[[1]][[2]] <- c(3, 2, 1) > > So thinking perhaps we just needed another level of subscripting "available" > I tried: > >> x <- list(list()) >> x[[1]][[1]] <- c(1, 2, 3) >> x[[1]][[2]] <- c(3, 2, 1) >> x > [[1]] > [[1]][[1]] > [1] 1 2 3 > > [[1]][[2]] > [1] 3 2 1 > > Success. Moral: Read the error messages for meaning or at least clues. > (Further testing showed that almost anything inside the original list() > call, even NULL, ?would have created enough structure for the interpreter to > work with. > >> > > David Winsemius, MD > West Hartford, CT > >
---------- Forwarded message ---------- From: Carlos Petti <carlos.petti at gmail.com> Date: 2010/8/10 Subject: Re: [R] List of lists ? To: David Winsemius <dwinsemius at comcast.net> Perhaps a solution : x <- list() x[[2]] <- list() x[[2]][[1]] <- c(1, 2, 3) x[[2]][[2]] <- c(3, 2, 1) 2010/8/10 Carlos Petti <carlos.petti at gmail.com>:> Thanks for answer. > > I read the error messages but I did not find the solution :-( > > Your solution works. > But, a new problem remains because I want > to use the list of lists as follows : > > x <- list(list()) > > x[[2]][[1]] <- c(1, 2, 3) > x[[2]][[2]] <- c(3, 2, 1) > > Thanks in advance, > Carlos > > 2010/8/9 David Winsemius <dwinsemius at comcast.net>: >> >> On Aug 9, 2010, at 12:57 PM, Carlos Petti wrote: >> >>> Dear list, >>> >>> I have to use a list of lists containing vectors. >>> >>> For instance : >>> >>> [[1]] >>> [[1]][[1]] >>> [1] 1 2 3 >>> >>> [[1]][[2]] >>> [1] 3 2 1 >>> >>> I want to attribute vectors to the main list >>> >>> without use of an intermediate list, >>> >>> but it does not work : >> >> More specifically it produces an error that has information in it. >>> x[[1]][[1]] <- c(1, 2, 3) >> Error in `*tmp*`[[1]] : subscript out of bounds >> >>> >>> x <- list() >>> x[[1]][[1]] <- c(1, 2, 3) >>> x[[1]][[2]] <- c(3, 2, 1) >> >> So thinking perhaps we just needed another level of subscripting "available" >> I tried: >> >>> x <- list(list()) >>> x[[1]][[1]] <- c(1, 2, 3) >>> x[[1]][[2]] <- c(3, 2, 1) >>> x >> [[1]] >> [[1]][[1]] >> [1] 1 2 3 >> >> [[1]][[2]] >> [1] 3 2 1 >> >> Success. Moral: Read the error messages for meaning or at least clues. >> (Further testing showed that almost anything inside the original list() >> call, even NULL, ?would have created enough structure for the interpreter to >> work with. >> >>> >> >> David Winsemius, MD >> West Hartford, CT >> >> >
> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of Carlos Petti > Sent: Tuesday, August 10, 2010 6:12 AM > To: r-help at r-project.org > Subject: [R] Fwd: List of lists ? > > ---------- Forwarded message ---------- > From: Carlos Petti <carlos.petti at gmail.com> > Date: 2010/8/10 > Subject: Re: [R] List of lists ? > To: David Winsemius <dwinsemius at comcast.net> > > > Thanks for answer. > > I read the error messages but I did not find the solution :-( > > Your solution works. > But, a new problem remains because I want > to use the list of lists as follows : > > x <- list(list()) > > x[[2]][[1]] <- c(1, 2, 3) > x[[2]][[2]] <- c(3, 2, 1)You need to tell it that x[[i]] will be a list for each i. You can do that with x <- list() for(i in 1:3) { x[[i]] <- list() for(j in seq_len(i)) { x[[i]][[j]] <- i*100 + seq_len(j) } } It might be easier to read and perhaps faster to do x <- list() for(i in 1:3) { xi <- list() # will become x[[i]] for(j in seq_len(i)) { xi[[j]] <- i*100 + seq_len(j) } x[[i]] <- xi } If you know the ultimate length of a list, and it will be long, it may save time to allocate the whole thing up front with xlength <- 3 x <- vector("list", xlength) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com> Thanks in advance, > Carlos > > 2010/8/9 David Winsemius <dwinsemius at comcast.net>: > > > > On Aug 9, 2010, at 12:57 PM, Carlos Petti wrote: > > > >> Dear list, > >> > >> I have to use a list of lists containing vectors. > >> > >> For instance : > >> > >> [[1]] > >> [[1]][[1]] > >> [1] 1 2 3 > >> > >> [[1]][[2]] > >> [1] 3 2 1 > >> > >> I want to attribute vectors to the main list > >> > >> without use of an intermediate list, > >> > >> but it does not work : > > > > More specifically it produces an error that has information in it. > >> x[[1]][[1]] <- c(1, 2, 3) > > Error in `*tmp*`[[1]] : subscript out of bounds > > > >> > >> x <- list() > >> x[[1]][[1]] <- c(1, 2, 3) > >> x[[1]][[2]] <- c(3, 2, 1) > > > > So thinking perhaps we just needed another level of > subscripting "available" > > I tried: > > > >> x <- list(list()) > >> x[[1]][[1]] <- c(1, 2, 3) > >> x[[1]][[2]] <- c(3, 2, 1) > >> x > > [[1]] > > [[1]][[1]] > > [1] 1 2 3 > > > > [[1]][[2]] > > [1] 3 2 1 > > > > Success. Moral: Read the error messages for meaning or at > least clues. > > (Further testing showed that almost anything inside the > original list() > > call, even NULL, ?would have created enough structure for > the interpreter to > > work with. > > > >> > > > > David Winsemius, MD > > West Hartford, CT > > > > > > ______________________________________________ > R-help at r-project.org 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. >