化学式+ Gnu R图中的文字标题

时间:2012-10-30 21:47:47

标签: r symbols

我如何在情节的标题中写下H2o?

感谢hint我可以在标题中包含一个简单的化学公式

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

这里的真实公式有点复杂,我想缩写它们并在需要时将它们添加到文本中。 但这失败了:

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

2 个答案:

答案 0 :(得分: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(解析(...))   通常不是最理想的,回答臭名昭着的问题         幸运(106))         R-help(2007年1月)

答案 1 :(得分: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的表达式中包含字符串。