12

我正在尝试获得一个标签以在其中包含指数。这是我的代码

vall = format(cor(x,y)*cor(x,y),digits=3)
eq <- expression(paste(R^2," = ",vall,sep=""))
text(legend.x,legend.y,eq,cex=1,font=2)

但是文字看起来像这样 在此处输入图像描述

如何让实际的 vall 显示(而不是文本“vall”)

4

1 回答 1

21

试试bquote(),例如:

set.seed(1)
vall <- format(rnorm(1),digits=3)
eq <- bquote(bold(R^2 == .(vall)))
sq <- seq(0, 1, by = 0.1)
plot(sq, sq, type = "n")
text(0.5, 0.5, eq)

您的示例不起作用的原因是 R 永远不会结束评估vall

> eq2 <- expression(paste(R^2," = ",vall,sep=""))
> eq2
expression(paste(R^2, " = ", vall, sep = ""))

plotmath 试图从中做出一些事情,但基本上vall是从字面上理解的。

一般来说,您不需要paste()在 plotmath 表达式中,您可以使用标准运算符和通过使用布局运算符构建表达式。例如,对于与您的示例生成的表达式(未评估vall)等效的表达式,您真正需要的是:

expression(R^2 == vall)

bquote()是用表达式中的值替换对象的一种方法。您将要替换为其值的对象包装在.( ). 然后,R 将查找对象并获取其值并将其插入到表达式中。

另请参阅substitute()使用不同界面的替代方法。

于 2012-12-28T18:54:33.063 回答