2

如果我使用一个长表达式,我知道如何得到我的结果:

expression(paste(M[O[2]], " (mg ", O[2], " ", h^-1, " ", kg^-1, ")"))

但我试图将其分成几块,以便用户可以选择时间和质量单位(以增加灵活性),然后将完整的表达式放在一起。假设我只是重复使用上面的时间和质量单位,但分成 3 个块,然后我尝试再次加入:

a = expression(paste(M[O[2]], " (mg ", O[2]))  
b = expression(kg^-1)  
c = expression(h^-1)  

我努力了

text(x, y, expression(a b c))  
text(x, y, paste(a, b, c))  
text(x, y, expression(paste(a, b, c)))  

但这会导致 a、b 和 c 剩余字符 a、b 和 c,而不是上面创建的表达式。我试过玩 bquote,但我承认没有掌握它,我也无法让它连接 3 个 plotmath 表达式。

有什么建议吗?

谢谢,

丹尼斯

4

1 回答 1

4

创建a, band的列表c并将 [[ 1 ]] 应用于每个组件以摆脱该expression部分,然后将结果替换为a * b * c * ")"如下所示:

e <- substitute(a * b * c * ")", lapply(list(a = a, b = b, c = c), "[[", 1))
plot(0, main = e)

(剧情后续)

截屏

请注意,如果和是使用而不是定义的a,那会更容易。在这种情况下,它简化为:bcquoteexpression

a <- quote(paste(M[O[2]], " (mg ", O[2]))  
b <- quote(kg^-1)  
c <- quote(h^-1)  
e <- substitute(a * b * c * ")", list(a = a, b = b, c = c))
于 2015-12-10T04:00:25.640 回答