【问题标题】:Chemical formula + Text in Gnu R plot titleGnu R绘图标题中的化学公式+文本
【发布时间】:2012-10-20 07:51:49
【问题描述】:

如何在情节标题中写 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 :(

【问题讨论】:

    标签: r symbols


    【解决方案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() inside 表达式,因为您可以在 plotmath 表达式中包含字符串。

    【讨论】:

    • 到目前为止有效,但如何从变量中读取化学式?
    • 我不认为你可以,我尝试了一些方法,包括bquote()substitute() 等。
    【解决方案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(...)) 是 通常不是最理想的,回答由臭名昭著引发的问题 财富(106)) R 帮助(2007 年 1 月

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 1970-01-01
      • 2021-09-09
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多