表达式 + 变量值 + 绘图标题中的普通文本

21

我想在R中的图表上实现如下的标题:

title = "The significance level you entered is alpha = 0.05 which is often used."
为了得到这个,我将整段文本分成小部分,这样最终我就能写出来。
title = paste(part1,part2,part3,part4)

这些零件包括:

part1 = "The significance level you entered is"

part2 = expression(alpha)

part3 = object@attribute

part4 = " which is often used."

所以我不能将这些部分组合起来得到我的结果。

要么符号显示正确,第三部分打印为object@attribute(而不是它的值),要么符号不显示,并且对象的值被正确打印。

我已经使用了?expression?print,但没有得到结果。

?plotmath提供的示例也不符合我的情况。


2
嗨,在我开始这个话题之前,我看了一下这个帖子。但是这里的区别在于,我想要连接符号、文本和变量的值。连接不是问题,但是评估我的对象属性却是问题所在。它总是被打印为object@attribute而不是0.05。 - user3093283
3
  1. 在我看来,这是一个明确陈述的合法问题。
  2. 通常来说,在 R 中使用 plotmath/expression/bquote 系统即使对于有经验的用户来说也相当困难。该主题上没有一篇现有的 Stack Overflow 问题是最终确定性的。
  3. 投票关闭的五个用户中,有四个没有 [r] 相关的问题或答案。
- bdemarest
哇,这个被错误地标记为重复了!所谓的重复与此问题基本无关。这个问题是关于将变量的值添加到标题中,而不仅仅是一个“表达式”。 - WetlabStudent
1个回答

30

一种解决方案是使用bquote()。在bquote内部使用.()来获取对象或表达式的值。这里是一个可能运行的示例:

obj = list(foo=0, bar=99, alpha=0.05)
plot(1:10, main=bquote("Significance level is" ~ alpha == .(obj$alpha)))

在这里波浪符~对于让bquote将alpha作为一个plotmath表达式来处理似乎是必要的。

输入图像描述


做得很好,感谢您的时间! - user3093283
2
如果您想在ggplot2geom_label中使用此内容,您必须将其包装在as.expression中:as.expression(bquote("Significance level is" ~ alpha == .(mean(x)))) - MS Berends
在我的情况下,我需要以上标数字“^1”开头,但似乎bquote不喜欢它。如果有任何建议,我会很感兴趣(expression(""^1")不是解决方案,因为我想放置text_in_var的内容,而且似乎后者不容易使用expression`实现。 - JelenaČuklina
@JelenaČuklina,可以尝试这样做:x <- 4; plot(1:10, main=bquote(` `^ .(1 - x) ~ "和一些文本。")) - bdemarest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接