gpt4 book ai didi

r - plot() 和 do.call() : How to pass expressions to plot title when '...' is used otherwise?

转载 作者:行者123 更新时间:2023-12-04 05:18:12 28 4
gpt4 key购买 nike

当运行以下代码时,我得到 Error in as.graphicsAnnot(text) : could not find function "bold" .我该如何解决这个问题?

my.qq <- function(x, main=expression(bold(italic(F)~~"Q-Q plot")),
margs=list(side=3, cex=par("cex.main"), font=par("font.main"),
adj=par("adj"), xpd=NA), ...)
{
plot(qnorm(ppoints(n <- length(x))), sort(x), ...)
do.call(mtext, c(list(main), margs))
}
x <- rnorm(100)
my.qq(x)
my.qq(x, main=substitute(bold(italic(F)[N(mu.,s2.)]~~"Q-Q plot"), list(mu.=0, s2.=1))) # fails

我的目标是使用列表 margs将附加参数传递给 mtext() .这通常是通过 ... 完成的,但这些参数已经传递给 plot() .

最佳答案

substitute在这种情况下,返回一个语言对象,而不是一个表达式。表达式 expressionR 中使用松散,但是这里似乎是 mtext需要一个类 expression 的对象.

您可以通过包装 substitute(...) 来确保这一点。在 as.expression()

my.qq(x, main=as.expression(substitute(bold(italic(F)[N(mu.,s2.)]~~"Q-Q plot"), list(mu.=0, s2.=1))))

或者更简单地通过传递一个表达式来替换(在对 mtext 的正常调用中需要)
my.qq(x, main=substitute(expression(bold(italic(F)[N(mu.,s2.)]~~"Q-Q plot")), list(mu.=0, s2.=1)))

上面的两个例子都会产生
enter image description here
substitute 的帮助中有说明

Substituting and quoting often cause confusion when the argument is expression(...). The result is a call to the expression constructor function and needs to be evaluated with eval to give the actual expression object.



但是在这种情况下 eval不是必需的

关于r - plot() 和 do.call() : How to pass expressions to plot title when '...' is used otherwise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982856/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com