2

次のコードを実行すると、 が得られ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()ます。

4

1 に答える 1

3

substituteこの場合、式ではなく言語オブジェクトを返します。式expressionは で大まかに使用されていますがR、ここでmtextは class のオブジェクトが必要なよう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)))

上記の例は両方とも生成されます ここに画像の説明を入力

ヘルプに注意書きがありますsubstitute

引数が式 (...) の場合、置換と引用はしばしば混乱を引き起こします。結果は式コンストラクター関数の呼び出しであり、実際の式オブジェクトを得るために eval で評価する必要があります。

ただし、この場合evalは必須ではありません

于 2012-12-21T01:06:59.627 に答える