使用`bquote`在主标题中正则表达式?

时间:2015-04-09 15:27:46

标签: r plot expression

我有使用arg的myplot函数,它是情节标题的一部分。我希望arg是类字符或表达式。但是,当arg是类表达式时,我无法使它工作。例如:

myplot <- function(..., arg){
  plot(..., main = bquote(paste("TPR(", .(arg), ")")))
}

# it works for characters
myplot(1, arg="t")

# but it won't work for expressions (I would like to have greek letters with a "hat" in the title)

myplot(1, arg=expression(hat(alpha[1])))

# however, using directly the expression works:
plot(1, main=bquote(paste("TPR(", hat(alpha[1]), ")")))

1 个答案:

答案 0 :(得分:2)

这个怎么样

f <- function(lab, tpr=1) {
    if(is.expression(lab)) {
        lab <- lab[[1]]
    }
    plot(1,1,main=bquote(plain(TPR) * (.(lab)) == .(tpr)))
}

f("hatalpha")
f(expression(hat(alpha)))

“表达式”实际上是对象的向量。在这里,我们显式提取第一个元素(在本例中为“call”)并将其插入到图表标题的表达式中。我还重写了表达式,以避免paste()这通常是不必要的。