【问题标题】:concatenate several math expressions in R在 R 中连接几个数学表达式
【发布时间】:2016-03-15 13:55:15
【问题描述】:

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

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

有什么建议吗?

谢谢,

丹尼斯

【问题讨论】:

  • 对于我帖子中的格式,我很抱歉,在不同行上的内容被放在了一行中,我不知道如何编辑帖子。

标签: r expression paste plotmath


【解决方案1】:

创建abc 的列表并将 [[1]] 应用于每个组件以删除expression 部分,然后将结果替换为a * b * c * ")" 像这样:

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

(剧情后续)

请注意,如果使用quote 而不是expression 定义abc 会更容易。在这种情况下,它简化为:

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

【讨论】:

  • 太棒了,非常感谢。我更喜欢quote版本,当然,我会阅读我以前从未使用过的quote。非常感谢,丹尼斯
猜你喜欢
  • 2016-12-20
  • 2012-10-20
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2014-06-02
相关资源
最近更新 更多