R:What';创建表达式向量的最简单的方法是什么?

R:What';创建表达式向量的最简单的方法是什么?,r,R,有没有办法在一行中创建表达式向量?我只知道有一个丑陋的for循环的两行: vexpr <- vector("expression", 7) for(j in 1:7) vexpr[j] <- substitute(expression(italic(X[j.])), list(j.=j))[2] vexpr 此外: (第二个版本将无法通过idential()测试,因为它带有其结构的传统。我认为这是字节码的副作用,是R版本2.14.0中出现的一种增强,因此在早期版本中可能会出现不同的

有没有办法在一行中创建表达式向量?我只知道有一个丑陋的for循环的两行:

vexpr <- vector("expression", 7)
for(j in 1:7) vexpr[j] <- substitute(expression(italic(X[j.])), list(j.=j))[2]
vexpr
此外:


(第二个版本将无法通过idential()测试,因为它带有其结构的传统。我认为这是字节码的副作用,是R版本2.14.0中出现的一种增强,因此在早期版本中可能会出现不同的效果。您可以通过应用str()来检查这一点。)然而,它确实通过了对
绘图(1:7,xaxt=“n”);轴(1,at=1:7,labels=…)
)应用适当的x轴标签的测试。

通过使用
paste0
而不是
paste

我投票支持
parse
方法,只是因为
bquote({something}.(x))
试图记住在哪个环境中发生了什么总是让我头疼:-)我认为
bquote
substitute(,list(x=x))有很大进步
as.expression( sapply(1:7, function(x) bquote(italic(X[.(x)]))) )
#-----------
# expression(italic(X[1L]), italic(X[2L]), italic(X[3L]), italic(X[4L]), 
#    italic(X[5L]), italic(X[6L]), italic(X[7L]))

identical(vexpr, as.expression( sapply(1:7, function(x) bquote(italic(X[.(x)]))) ) )
#[1] TRUE
parse(text= paste("italic(X[", 1:7, "])", sep="") )  # fewer keystrokes
#--------
# expression(italic(X[1]), italic(X[2]), italic(X[3]), italic(X[4]), 
#    italic(X[5]), italic(X[6]), italic(X[7]))