[R] use expression() in a loop

Henrik Bengtsson hb at stat.berkeley.edu
Tue Aug 19 01:37:43 CEST 2008


...or use the more generic substitute() to replace parts of an expression, e.g.

  i <- 3;
  xlab1 <- substitute(g[idx], list=list(idx=i));
  xlab2 <- bquote(g[.(i)]);
  stopifnot(identical(xlab1, xlab2));

/Henrik


On Mon, Aug 18, 2008 at 3:18 PM, Marc Schwartz
<marc_schwartz at comcast.net> wrote:
> on 08/18/2008 05:00 PM Nanye Long wrote:
>> Hi all,
>>
>> I want to do plot() in a loop to make 10 graphs, so I have some code like
>>
>> for (i in 1:10) {
>>    plot(... ... , xlab = expression(g[i]) )
>> }
>>
>> I expect g_1, g_2, and so on appear on x labels, but it simply prints
>> g_i for each graph. Does anybody know how to get around this problem?
>> Thanks.
>>
>> NL
>
> Try this:
>
> par(mfrow = c(5, 2))
>
> for (i in 1:10)
>  plot(1, xlab = bquote(g[.(i)]))
>
>
> Note the use of bquote() and the use of .(i), which replaces 'i' with
> the value of i in each iteration.
>
> See ?plotmath for some examples and ?bquote
>
> HTH,
>
> Marc Schwartz
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list