Re: [R] filling a list faster

From: jim holtman <jholtman_at_gmail.com>
Date: Fri, 13 Jul 2007 07:00:21 -0400

It all depends on what you want to do. In your example, it is faster to first fill in a matrix and then convert the matrix to a list. The problem with filling in the list is that you are dynamically allocating space for each iteration which is probably taking at least an order of magnitude more time than the calculations you are doing. So I just translated your problem into two steps and it takes about 2 seconds on my system.

> # fill in a matris
> l <- matrix(ncol=3, nrow=10^5)
> system.time(for(i in (1:10^5)) l[i,] <- c(i,i+1,i))

   user system elapsed
   1.06 0.00 1.10
> # convert to a list
> system.time(l.list <- lapply(1:10^5, function(i) l[i,]))

   user system elapsed
   0.45 0.00 0.46
> l.list[1:10]
[[1]]
[1] 1 2 1

[[2]]
[1] 2 3 2

[[3]]
[1] 3 4 3

[[4]]
[1] 4 5 4

[[5]]
[1] 5 6 5

On 7/13/07, Balazs Torma <torma_at_sztaki.hu> wrote:
> hello,
>
> first I create a list:
>
> l <- list("1"<-c(1,2,3))
>
> then I run the following cycle, it takes over a minute(!) to
> complete on a very fast mashine:
>
> for(i in (1:10^5)) l[[length(l)+1]] <- c(i,i+1,i)
>
> How can I fill a list faster? (This is just a demo test, the elements
> of the list are calculated iteratively in an algorithm)
>
> Are there any packages and documents on how to use more advanced and
> fast data structures like linked-lists, hash-tables or trees for
> example?
>
> Thank you,
> Balazs Torma
>
> ______________________________________________
> R-help_at_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.
>

-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

______________________________________________
R-help_at_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.
Received on Fri 13 Jul 2007 - 11:03:55 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 Fri 13 Jul 2007 - 11:33:03 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.