[R] using index of a loop as a macro variable

Thomas Lumley tlumley at u.washington.edu
Mon Jul 4 22:47:40 CEST 2005


On Mon, 4 Jul 2005, E. Michael Foster wrote:
> I'm a long-time STATA user and a R newbie. I'm doing ok, but I'm addicted
> to STATA macro variables.  Is there something like a macro variable in R?
>
> Specifically, I'd like to be able to do something like
>
> for (i in 1:3) {
> 	.....
> 	x`i' <- ...
> }
>
> where R would resolve x`i' to the objects named x1, x2 and x3 as I move
> through the loop.  I guess I could create these in advance of the loop and
> fill them in, but I'd rather not.
>
> Is there a way to use an index of a loop in this manner?

No. Well, actually, yes, but you don't want to. Stata macros rarely 
translate word-for-word into R.  There is a FAQ describing how to do this 
sort of thing, but the most important paragraph is the last one, where it 
says not to do this.


What you want is a list.

for(i in 1:3){
     .....
     x[[i]]<-...
}

Now, x needs to exist before the loop. You can use
    x<-NULL
to create it, or if you know how long it will be you can use
    x<-vector("list",3)



 	-thomas




More information about the R-help mailing list