[R] create list of vectors in for loop

peter dalgaard pdalgd at gmail.com
Tue Dec 6 13:33:35 CET 2016


On 06 Dec 2016, at 11:17 , Jim Lemon <drjimlemon at gmail.com> wrote:

> Hi Paul,
> The easy to understand way is:
> 
> n <- c(1:10)
> # Create empty list to store vectors
> list_of_vecs <- list()
> 
> # Create n vectors of random numbers - length 10. This works ok.
> for (i in n){
> list_of_vecs[[i]]<-rnorm(10,0,1)
> }

As a principle, you want 

  list_of_vecs <- vector("list", 10)

to avoid extending the list on each iteration.


However, a simpler way is

replicate(10, rnorm(10), simplify=FALSE)

(where the simplify bit prevents conversion to 10x10 matrix)

or 

lapply(1:10, function(i) rnorm(10))



-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list