我熟悉使用expression()
和bquote()
在R中的文本基础图形中绘制特殊的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")))
答案 0 :(得分:10)
这应该可以解决问题:
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"))