But pre-allocation still helps
a <- vector("list", 10001)
for(i in 0:10000) a[[i+1]] <- i
gives
user system elapsed
0.042 0.001 0.057
on my system, against
user system elapsed
0.743 0.000 1.907
for Bill's 'best' solution.
On Wed, 28 May 2008, [EMAIL PROTECTED] wrote:
This is somewhat subtle.
Rolf's solution (here corrected to...)
a <- list()
for(i in 0:10000) a[[i+1]] <- i
is the best of the loop solutions (or at least the best I know of). The
apparently similar
a <- list(0)
for(i in 1:10000) a <- c(a, list(i))
will take a lot longer, although the result is the same. For example:
system.time({
a <- list()
for(i in 0:10000) a[[i+1]] <- i
})
user system elapsed
0.59 0.00 0.59
system.time({
a <- list(0)
for(i in 1:10000) a <- c(a, list(i))
})
user system elapsed
6.87 0.00 6.89
That's a factor of about 11 times as long. The best of the lot is
a <- as.list(0:10000)
of course, but this has problems with generalisation, (which everyone
suspects is going to be needed here...).
Bill Venables.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Rolf Turner
Sent: Wednesday, 28 May 2008 1:02 PM
To: Daniel Yang
Cc: r-help@r-project.org
Subject: Re: [R] how to bind lists recursively
On 28/05/2008, at 2:43 PM, Daniel Yang wrote:
Dear all,
I want to create a list that contains 0,1,2,3, ..., 10000 as its
elements. I used the following code, which apparently doesn't work
very well.
a <- 0
for(i in 1:10000) {
a <- list(a, i)
}
The result is not what I wanted. So how to create the bind lists
recursively so that the last element would be the newly added one
while the previous elements all remain the same?
a <- list()
for(i in 1:10000) a[[i]] <- i
(The word ``bind'' is inappropriate.)
cheers,
Rolf Turner
--
Brian D. Ripley, [EMAIL PROTECTED]
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________
R-help@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.