我的代码如下:
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,我该如何实现呢?我很感激你的帮助。
答案 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]]) ))
}
这里并不需要foo
变量。你可以轻松地做到
for(i in 1:2){
plotf(title=bquote("Test"~a[.(i)]) )
}