[R] Loop question

Stavros Macrakis macrakis at alum.mit.edu
Sat Apr 18 21:47:13 CEST 2009


On Fri, Apr 17, 2009 at 10:12 PM, Brendan Morse <morse.brendan at gmail.com> wrote:
> ...I would like to automatically generate a series of matrices and
> give them successive names. Here is what I thought at first:
>
> t1<-matrix(0, nrow=250, ncol=1)
>
> for(i in 1:10){
>        t1[i]<-rnorm(250)
> }
>
> What I intended was that the loop would create 10 different matrices with a
> single column of 250 values randomly selected from a normal distribution,
> and that they would be labeled t11, t12, t13, t14 etc.

Very close.  But since you've started out with a *matrix* t1, your
assignments to t1[i] will assign to parts of the matrix.  To correct
this, all you need to do is initialize t1 as a *list of matrices* or
(even better) as an *empty list*, like this:

   t1 <- list()

and then assign to *elements* of the list (using [[ ]] notation), not
to *sublists* of the list (which is what [ ] notation means in R),
like this:

for(i in 1:10){
       t1[[i]] <- rnorm(250)
}

Is that what you had in mind?

           -s




More information about the R-help mailing list