2017-02-08 12 views
0

私のlegend()ifelse()がなぜ動作しないのでしょうか?私は次のエラーを取得する:ここでifelse()が凡例で動作していないR

**Error in rep(no, length.out = length(ans)) : attempt to replicate an object of type 'language'**

は私のRコードです:

Gi <- 2  
plot(1:10,ty="n") 

legend("topright", 
    legend=ifelse(Gi>1,  ## ! ifelse() Not Working HERE ! ## 
    bquote(paste("Evidence favors A: ",bold('CT'[10]), 
       " = ", .(round(Gi,3)))), 
    bquote(paste("Evidence favors B: ",bold('CT'[01]), 
       " = ", .(round(1/Gi,3))))), 
    pch = " ",cex=1.5, bty="n", inset=c(.005,-.05)) 

答えて

0

私はbquote()関数は、あなたのために何をするか本当にわからないが、私はあなたのコードを変更しましたあなたのプロットに表示される伝説を少し得た。

これはコードです。あなたが正しいと思ったら教えてください。

Gi <- 2  
plot(1:10,ty="n") 

l <- ifelse(Gi>1, paste0("Evidence favors A: ",'CT[10]'," = ", (round(Gi,3))), 
     paste0("Evidence favors B: ",'CT[01]'," = ",(round(1/Gi,3)))) 

legend("topright", legend=l, pch = " ",cex=1.5, bty="n", inset=c(.005,-.05)) 
+0

ディネッシュ、おかげで、しかし、これは(bquote 'のために、それをしていませんが)' ')('?bquoteを確認してください '、ここでは'その 'ラウンド()を確保し、' CT [10] BOTH正しく動作します。また、あなたのコードにバグがあると思います。 – rnorouzian

+0

バグは何と思いますか?また、私はbquote()をチェックしました、それはエラーがあった理由でした。 Bquoteは、言語オブジェクトとして提供する引数を評価し、paste()は文字列を返します。伝説の場合、文字列がうまく機能します。 –

+0

Dinesh様、更新していただきありがとうございます。まず、あなたのコードでは '' CT '[10] 'の下付き文字が正しく表示されないようにしています。次に、 'Gi'を' .25'に変更してバグを見つけます。これは、コードの2番目の部分に余分な '.'です。 – rnorouzian

関連する問題