Re: [R] how to bind lists recursively

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Wed, 28 May 2008 07:04:25 +0100 (BST)

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, Bill.Venables_at_csiro.au 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: r-help-bounces_at_r-project.org [mailto:r-help-bounces_at_r-project.org]
> On Behalf Of Rolf Turner
> Sent: Wednesday, 28 May 2008 1:02 PM
> To: Daniel Yang
> Cc: r-help_at_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,                  ripley_at_stats.ox.ac.uk
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_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.
Received on Wed 28 May 2008 - 06:51:26 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 28 May 2008 - 12:30:42 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive