主标题中带有“bquote”的正则表达式?

regular expression in main title with `bquote`?

我有使用 arg 的 myplot 函数,它是绘图标题的一部分。我希望 arg 是 class 字符或表达式。但是,当 arg 是 class 表达式时,我无法让它工作。示例:

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]), ")")))

这个怎么样

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)))

一个"expression"实际上是objects的向量。在这里,我们显式提取第一个元素(在本例中为 "call")并将其插入到绘图标题的表达式中。我还 re-written 避免 paste() 的表达,这通常是不必要的。