我想在R图中显示物理单位。为了获得更好的排版,我以这种方式使用表达式函数:
plot(rnorm(10),rnorm(10),main=expression(µg.L^-1))
现在假设该单元不是静态已知的,并由变量[unit]给出:
unit = 'µg.L^-1'
plot(rnorm(10),rnorm(10),main=expression(unit))
这当然不起作用,因为[unit]不会被其值代替。有什么方法可以实现这个目标吗?
修改
我要强调的是,这里的主要困难是要显示的单位作为字符串发送到我的绘图功能。所以unit
的内容应该被解释为某个点(从一个字符串转换为一个表达式对象)的表达式,这就是texb的答案派上用场的地方。所以请将此问题取消标记为重复,因为parse
的使用在此非常重要,甚至在您建议的帖子中都没有提及。
答案 0 :(得分:2)
怎么样:
unit = 'µg.L^-1'
plot(rnorm(10),rnorm(10),main=parse(text=unit))
答案 1 :(得分:2)
bquote
函数使您可以在插入变量值时灵活地创建表达式。这是一个例子:
unit <- as.name('mu')
plot(rnorm(10), main=bquote( .(unit)*.L^-1 ) )
答案 2 :(得分:2)
我认为这两个答案都很有帮助,但我们建议更完整地使用plotmath语法。你目前接受的答案并没有真正解析希腊语mu和Greg Snow的答案没有说明表达式如何用作值(但它确实显示了如何在表达式中替换)。所以这是另一个替代方案,也显示使用plotmath cdot
运算符作为分隔“点”,我认为更好地解决了您对排版的兴趣。
plot(1,1, main=expression(mu*g %.% L^-1) )
也可以创建完全形成的表达式并按名称保存:
micgmperL = expression(mu*g %.% L^-1)
plot(1,1, main=micgmperL)