在R中连接几个数学表达式

时间:2015-12-10 03:39:23

标签: r expression paste plotmath

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

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表达式。

有什么建议吗?

谢谢,

丹尼斯

1 个答案:

答案 0 :(得分:4)

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

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

(情节后继续)

screenshot

请注意,使用a而不是b定义cquoteexpression会更容易。在这种情况下,它简化为:

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))