3

我熟悉在 R 中的文本基础图形中使用expression()bquote()绘制特殊的 Tex 之类的标记时。但是如何在不让解析器抛出错误的情况下做到“大约等于”。我指的是?plotmath在确定标记时。

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="")

# This works
text(50, 80, expression(paste("The area is 24 ", km^2)))

# This doesn't
text(50, 50, expression(paste("Reginald is ", %~~% , "14 years old")))
4

1 回答 1

11

这应该可以解决问题:

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="")
text(50, 50, 
     expression(paste("Reginald is ", phantom() %~~% phantom(), "14 years old")))

您的版本不起作用的原因是%~~%“运算符”希望成为表达式的一部分,其左侧和右侧都有一些东西。phantom()为您提供(a)不可见且(b)不占用宽度的东西——正是您所需要的。

编辑

我每天都学到一些东西。Brian Diggs 在评论中指出,您可以产生相同的效果,更简单的是只需省略表达式中的逗号(在这种情况下,您甚至不需要嵌套调用paste())。这是更好的解决方案:

text(50, 50, expression("Reginald is " %~~% "14 years old"))
于 2012-03-09T21:30:15.647 回答