1

如何在情节标题中写 H2o?

多亏了这个提示,我可以在标题中包含一个简单的化学式

plot(main=expression(H[2]*O),0)

这里的真正公式要复杂一些,我想将它们缩写并在需要的地方添加到文本中。但这失败了:

h2o <- expression(H[2]*O)
plot(main=paste(h2o, "in the air"),0) # paste fails here :(
4

2 回答 2

2

这是一种方法,可让您将化学式包含在变量中。

# note that .formula is either an expression or a character
# string that would define a valid expression
maketitle <- function(.formula, .other){
  .expression <- sprintf('%s ~ "%s"',as.character(.formula), .other)
  evalq(parse(text = .expression))
}


f <- expression(H[2]*O)
o <- 'blah blah'

plot(1:10, main = maketitle(f, o))

牢记危险eval(parse(text = ...))

就我个人而言,我从不后悔试图不低估自己未来的愚蠢。-- Greg Snow(解释为什么 eval(parse(...)) 经常不是最理想的,回答一个由臭名昭著的 fortune(106) 引发的问题)R-help(2007 年 1 月)

于 2012-10-31T00:36:35.507 回答
1

你要

plot(1:10, main = expression(H[2] * O ~ "in the air"))

或者

plot(1:10, main = expression(H[2] * O ~ "in" ~ the ~ air))

in需要引用,因为它是解析器首先捕获的 R 语法的一部分,如for(i in 1:10).)

重要的一点是x ~ y符号的位置xy彼此相邻的分隔。阅读?plotmath

重点是,您在此处提供的任何内容都必须是由expression(). 通常,您不需要paste() 表达式中,因为您可以在 plotmath 表达式中包含字符串。

于 2012-10-30T21:52:30.663 回答