12

自分の環境に新しい行を追加したいのですがbquote、どうすればよいですか?

私のコード:

test<-c(1,2,3,4,4.5,3.5,5.6)
test2<-0.033111111
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, 4.5, labels = bquote(Qua[0.99] == .(round(test2,4))),col="red", cex = 1.4)

そして、等号の後に改行を入れたいので、次のようになります。

VaR_0.99 =

0.03311

and not

    VaR_0.99 = 0.03311

行で試しましたが、うまくいきませんでした:

    test<-c(1,2,3,4,4.5,3.5,5.6)
    test2<-0.033111111
    lines<-list(bquote(Qua[0.99] == ),bquote(.(round(test2,4))))
    plot(test,c(1:length(test)))

    segments(4,0,4,23,col="red",lwd=2)
    text(5, 4.5, labels =lines ,col="red", cex = 1.4)
4

3 に答える 3

9

たとえば、次を使用しatopます。

test<-c(1,2,3,4,4.5,3.5,5.6)
test2<-0.033111111
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, 4.5, 
     labels = bquote(atop(Qua[0.99] == phantom(), .(round(test2,4)))),
     col="red", cex = 1.4)

ここに画像の説明を入力

于 2013-03-27T16:24:35.143 に答える
8

エラーの 1 つは、上記の質問者へのコメントに記載されています。R 式は解析されるため、構文的に有効である必要があります。「==」は引数が 2 つの関数であるため、式の最後の項目にすることはできません。このphantom関数は、非印刷のプレースホルダーとして機能します。空の文字値 ( "") の可能性もあります。評価する必要がある「外部」の値がなかったので、式リストの最初の引数ではexpression()なく、単に使用しました。bquote()

(注: R の式はリストとして動作するため、c()言語項目を単一の要素式に追加することに成功し、list()必要ではなく、実際、この状況では有害でした。bquote「式」を返さない別の微妙な点があります-分類された結果ではなく、「呼び出し」です。ここas.expressionの場合のように、真の「式」が必要な場合は、でラップする必要があるかもしれません.R の専門家lapply( . , as.expression)が同様の状況で式リストを返すために an を使用するのを見たことがあります.)

もう 1 つは、構文エラーというよりも意味エラーでした。2 番目の式には明示的な y 位置を指定する必要がありますbquote。テキストの重要な引数のほとんどすべてはベクトル対応ですが、y 値の暗黙的なアップ (またはダウン) インデックスはないようです。

test <- c(1, 2, 3, 4, 4.5, 3.5, 5.6)
test2 <- 0.033111111
lines <- c( expression(Qua[0.99] == phantom(0)) ,
           bquote(.(round(test2,4)))
          )
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, c(4.5, 4), labels =lines ,col="red", cex = 1.4)

ここに画像の説明を入力

私はatop過去にこの提案を自分自身で使用し、Rhelp で提案したこともありますが、上記のアプローチは 3 つ以上の式に一般化し、配置をより細かく制御できると思います。atopまた、フォント サイズを静かに縮小するため、3 つの式のタスクでネストされたトップ ルートを使用した場合はatop( atop(..., ...), atop(..., phantom() )、サイズを均一に保つ必要があるかもしれません。

于 2013-03-27T16:24:59.553 に答える
0

これが欲しかったのですが、左揃えにしました。解決策を探した後text()、プロットの寸法に関係なく、テキストを 0.25 インチ離し、上から 0.25 インチ離すように設定された 2 つの呼び出しを使用することになりました。

plot(1:100)
r2 <- 40.2
rmse <- 0.6
ll = bquote(paste(italic(R)^2," = ",.(r2),"  RMSE = ",.(rmse)))
val=0.25*diff(par('usr')[3:4])/par('pin')[2]
text(par('usr')[1], par('usr')[4] - val, pos=4, labels=ll)
text(par('usr')[1], par('usr')[4] - 2*val, pos=4, labels="Model A")

コードによって生成された画像

于 2020-04-09T19:20:45.780 に答える