如果我使用一个长表达式,我知道如何得到我的结果:
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表达式。
有什么建议吗?
谢谢,
丹尼斯
答案 0 :(得分:4)
创建a
,b
和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
而不是b
定义c
,quote
和expression
会更容易。在这种情况下,它简化为:
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))