Skip to content

Loop question

5 messages · Brendan Morse, Jorge Ivan Velez, Ben Bolker +2 more

#
Hi everyone, I am trying to accomplish a small task that is giving me  
quite a headache. 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.

Can anyone steer me in the right direction with this one?

Thanks!
Brendan
#
Brendan Morse wrote:
I think you're basically looking for

http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f

or

http://wiki.r-project.org/rwiki/doku.php?id=tips:data-misc:create_var_names

but see the comments in both places that indicate why it may be easier to do
this
as a list.

for(i in 1:10){
	assign(paste("t1",i,sep=""),matrix(rnorm(250)))
}
#
On Fri, Apr 17, 2009 at 10:12 PM, Brendan Morse <morse.brendan at gmail.com> wrote:
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