1

我想在 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这里的使用是基本的,甚至在您建议的帖子中都没有提及。

4

3 回答 3

2

怎么样:

unit = 'µg.L^-1'
plot(rnorm(10),rnorm(10),main=parse(text=unit))
于 2013-07-22T13:23:41.640 回答
2

我认为这两个答案都有帮助,但想建议更完整地使用 plotmath 语法。您目前接受的答案并没有真正单独解析希腊语 mu 并且 Greg Snow 的答案没有说明如何将表达式用作值(但它确实显示了如何在表达式中进行替换)。所以这是另一种选择,它也显示使用 plotmathcdot运算符作为分隔“点”,我认为它可以更好地满足您对排版的兴趣。

plot(1,1, main=expression(mu*g %.% L^-1) )

也可以创建完全形成的表达式并按名称保存:

micgmperL = expression(mu*g %.% L^-1) 
plot(1,1, main=micgmperL)
于 2013-07-22T16:52:53.473 回答
2

bquote函数使您可以灵活地创建表达式,同时从变量中插入值。这是一个例子:

unit <- as.name('mu')
plot(rnorm(10), main=bquote( .(unit)*.L^-1 ) )
于 2013-07-22T14:48:58.960 回答