R - 在绘图函数中循环下标(简单的初学者' s qst)

时间:2015-05-25 20:57:43

标签: r graph plot

我的代码如下:

plotf = function(title=expression("Test"~a )){
   plot(cars)
   title(title)
}

foo = c('a[1]', 'a[2]')

for(i in 1:2){
   plotf(title=expression("Test"~foo[i] ))
}

对于第一个情节,我希望有一个下标1,对于第二个情节,我有一个下标2,我该如何实现呢?我很感激你的帮助。

1 个答案:

答案 0 :(得分:2)

表达式未被评估,因此表达式中的foo[i]仍为符号和调用,并且不会扩展为其值。另外,如果你想要下标,你需要使用表达式而不是字符串。请注意,"a[1]"a[1]不同;前者是一个字符值,后者实际上是一个" call"。

要动态构建表达式,您可以使用bquote()substitute()动态插入部分。这是使用前者

的一个例子
foo = expression(a[1], a[2])

layout(matrix(1:2, nrow=1))
for(i in 1:2){
   plotf(title=bquote("Test"~.(foo[[i]]) ))
}

enter image description here

这里并不需要foo变量。你可以轻松地做到

for(i in 1:2){
   plotf(title=bquote("Test"~a[.(i)]) )
}