绘图标题、标签等中的字符串和表达式

3

我正在尝试将用户提供的字符串和固定的字符串拼接在一个图表标题中。

当然,一个简单的可以工作的例子:

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)

但是这个例子来自这里,完全可以正常工作[编辑:链接是错误的问题]。

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

我的示例4看起来几乎与上一个完全相同,但行为不同。有如此多的、、组合,我已经查看了很多答案,但可能会错过一些非常小的东西。如果用户字符串包含表达式,您有什么建议可以将用户字符串和固定字符串结合在一起?谢谢。


看起来你没有提供ARL或ARL[1]。as.expression将评估它的参数。 - IRTFM
我正在处理这个问题,但是不明白其中的“问题”所在。您需要解释一下您的期望,这样我们才能解释为什么那不应该发生。 - IRTFM
嗯,我承认我不明白那个答案是怎么回事,但我只是将答案 plot(1:10, main = expression(ARL[1] ~ "curve for" ~ S^2))复制粘贴到控制台中,它就起作用了。 - Bryan Hanson
就像我说的那样。请说出您想要什么,然后我们可以提供帮助。如果您只是抱怨代码失败,但没有用自然语言表达您的愿望,那么我们就“一筹莫展”。 - IRTFM
既然我们已经证明了我们没有共享技术语言,我们需要理解您所说的“用户提供的表达式”的含义。R表达式是一种特定类型的语言对象。这个“用户提供的表达式”是否有符合R表达式要求的期望? - IRTFM
显示剩余5条评论
1个回答

3
我可以使用公式来完成这个任务:
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) )

非常感谢您一直陪伴着我。我确实认为我可能错过了一些简单的东西,但我想这确实有点棘手。特别是在您的“表达式”方法中,不得不使用.(eval(userTitle))而不是仅仅使用.(userTitle)似乎真的很奇怪。非常感谢您找出来;您是通过试错法找到的吗?它不在bquote文档中,并且SO中没有使用它的示例(好吧,直到现在!)。 - Bryan Hanson
"Trial and error. 对我来说,帮助文档在这方面完全没用。Hadley Wickham 在他的草稿书中有一些有用的材料,但我同意你的看法,需要在 bquote 中进行 eval 看起来确实很奇怪。这似乎是过度设计。" - IRTFM

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