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
Loop question
5 messages · Brendan Morse, Jorge Ivan Velez, Ben Bolker +2 more
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090417/cf2ed2cf/attachment-0001.pl>
Brendan Morse wrote:
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.
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))) }
View this message in context: http://www.nabble.com/Loop-question-tp23108752p23108788.html Sent from the R help mailing list archive at Nabble.com.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090418/37ed6d62/attachment-0001.pl>
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