Re: [R] How to create a list that grows automatically
> I would like to know if there is a way to create a list or an array (or > anything) which grows automatically as more elements are put into it. What I > want to find is something equivalent to an ArrayList object of Java > language. In Java, I can do the following thing: > > // Java code > ArrayList myArray = new ArrayList(); > myArray.add("object1"); > myArray.add("object2"); > > // End of java code As others have mentioned, you can do this with lists in R. However, there is an important difference between ArrayLists in Java and Lists in R. In Java, when an ArrayList grows past its bound, it doesn't allocate just enough space, it allocates a lot more, so the next time you allocate past the end of the array, there's space already reserved. This gives (IIRC) amortised O(n) behaviour. R doesn't do this however, so has to copy the entire array every time giving O(n^2) behaviour. Hadley __ 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.
Re: [R] How to create a list that grows automatically
This is a bad idea as it can greatly slow things down (the details were discussed several times on this list). What you want to do is define from the start the length of your vector/list, then grow it (by a large margin) only if it becomes full. lst <- vector(mode="list", length=10) #assuming 100k nodes are enough #populate the list, then remove the unused nodes if you care to lst <- lst[sapply(lst, function(x) {!is.null(x)})] > -Original Message- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Young-Jin Lee > Sent: Friday, March 09, 2007 11:08 AM > To: r-help > Subject: [R] How to create a list that grows automatically > > Dear R users > > I would like to know if there is a way to create a list or an > array (or > anything) which grows automatically as more elements are put > into it. What I > want to find is something equivalent to an ArrayList object of Java > language. In Java, I can do the following thing: > > // Java code > ArrayList myArray = new ArrayList(); > myArray.add("object1"); > myArray.add("object2"); > > // End of java code > > Thanks in advance. > > Young-Jin Lee > > [[alternative HTML version deleted]] > > __ > 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. > __ 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.
Re: [R] How to create a list that grows automatically
Young-Jin Lee asked: > > I would like to know if there is a way to create a list or an array (or > anything) which grows automatically as more elements are put into > it. > ??? I think this is the default behaviour of R arrays: x <- vector(length=0) # create a vector of zero length x[1] <- 2 x[10] <- 3 x[length(x) + 1] <- 4 x # 2 NA NA ... 3 4 > What I want to find is something equivalent to an ArrayList > object of Java language. In Java, I can do the following thing: > > // Java code > ArrayList myArray = new ArrayList(); > myArray.add("object1"); > myArray.add("object2"); > > // End of java code > myArray <- vector(length=0) myArray <- c(myArray, "object1") myArray <- c(myArray, "object2") myArray # array with 2 strings Alberto Monteiro __ 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.