【问题标题】:Strings & Expressions in Plot Titles, Labels etc情节标题、标签等中的字符串和表达式
【发布时间】:2013-08-27 19:38:41
【问题描述】:

我正在尝试将用户提供的字符串和固定字符串粘贴到情节标题中。

当然是一个简单的例子:

userTitle <- "user title" # Example 1
fullTitle <- paste(userTitle, ": Results", sep = "")
plot(1:10, main = fullTitle)

但是如果用户的标题包含一个表达式怎么办?以下是我尝试过的一些事情:

# This works, but doesn't include the fixed string # Example 2
userTitle <- expression(italic(Genus)~italic(species)) # EDIT: this was missing
fullTitle <- bquote(.(userTitle))
plot(1:10, main = fullTitle)

尝试添加固定字符串。一些不太奏效的事情:

fullTitle <- bquote(.(userTitle)~':'~Results) # Example 3
plot(1:10, main = fullTitle) # title missing .(userTitle)

fullTitle <- bquote(paste("Results:", .(userTitle))) # Example 4
plot(1:10, main = fullTitle) # title missing .(userTitle)

但是这个来自here 的例子工作得很好[编辑:链接是错误的问题]。

x<- 232323
plot(1:10, main = bquote(paste(ARL[1], " curve for ", S^2, "; x=",.(x))))

我的示例 4 看起来与最后一个非常相似,但表现不一样。 bquoteexpressionsubstitute 的组合太多了,我查看了很多答案,但我可能遗漏了一些非常小的东西。如果用户字符串在这种情况下包含表达式,有关如何将用户字符串和固定字符串放在一起的任何建议?谢谢。

【问题讨论】:

  • fullTitle &lt;- as.expression(bquote(.(userTitle)~":"~Results))
  • 看这里,您似乎没有提供 ARL 或 ARL[1]。 as.expression 将评估其参数。
  • 我正在解决这个问题,但没有遇到“问题”。您需要解释您的预期,以便我们解释为什么不应该不会发生。
  • @baptiste 我已经尝试过了(我认为),对我来说它给出了与示例 3 和 4 相同的结果。@ Dwin 我有错误的链接到另一个问题,只是修复了它。对不起。我想要的是让用户提供一个表达式,该表达式会导致标题“属物种:结果”,其中属和物种是斜体的。
  • 不,不,不。您链接到一个没有明确定义 ARL 的问题。用自然语言说出你想说的话。如果你想要 ARL*subscript(1) 那么请说出表达这种愿望的话。

标签: r plotmath


【解决方案1】:

我可以用公式做到这一点:

userTitle <- italic(Genus)~italic(species) 
plot(1, 1., main=substitute( userTitle*": Results" , 
                              list(userTitle=userTitle) ) )

现在用一个表达式:

userTitle <- expression( italic(Genus)~italic(species) )
plot( 1, 1, main= bquote(.(eval(userTitle))*":"~Results) )

【讨论】:

  • 非常感谢您的支持。我当然认为我一定错过了一些简单的东西,但我想这确实有点棘手。特别是,在您的expression 方法中,必须使用.(eval(userTitle)) 而不仅仅是.(userTitle) 似乎真的很奇怪。非常感谢您解决这个问题;您是通过反复试验找到的吗?它不在 bquote 文档中,并且在 SO 中没有使用它的示例(嗯,直到现在!)。
  • 反复试验。无论如何,对我来说,帮助文档对于这个目的完全没有用。 Hadley Wickham 在他的草稿书中有一些有用的材料,但我同意你的观点,需要在 bquote 中进行 eval 似乎真的很奇怪。这似乎有点矫枉过正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2011-09-25
  • 2021-03-03
  • 2022-06-24
  • 1970-01-01
  • 2014-07-20
  • 2020-02-09
相关资源
最近更新 更多