在 substitute() 中评估作为字符串给出的表达式

Evaluate an expression given as a string inside substitute()

我想计算 substitute() 中作为字符串给出的表达式,但我没有得到预期的输出(x 轴标签 "My index"... 带有下标) :

mystrng <- "index[1]" # string
plot(0~1, xlab = substitute("My"~ind, list(ind = mystrng))) 
plot(0~1, xlab = substitute("My"~ind, list(ind = parse(text = mystrng))))
plot(0~1, xlab = eval(substitute("My"~ind, list(ind = parse(text = mystrng)))))

注:

1) 没有substitute(),可以使用parse(text = mystrng)。另见 here。正如这个 link 也揭示的那样,不应该使用字符串,但是,例如 quote(index[1]) 可以与上面的第一个 plot() 调用一起使用。我只是对如何处理字符串感兴趣。

2) 最后一个 plot() 调用试验的灵感来自 ?substitute

3) 理想情况下,如果 mystrng 包含空格,如 "My index[1]"

,该解决方案也有效

parse() returns 一个 expression,本质上是一个标记为不同类型的语言列表 object。你想在标题中加入一种语言object,所以我认为这就是你想要的:

plot(0~1, xlab = substitute("My"~ind, list(ind = parse(text = mystrng)[[1]])))

将其作为 x 标签:

如果 mystrng 不是合法的 R 语法,这将不起作用,因此 "My index[1]" 将需要一些预处理以将其转换为合法的东西,例如 "My~index[1]"