2017-02-08 4 views
0

Мне было интересно, почему ifelse() в моем legend() ниже не работает должным образом? Я получаю следующее сообщение об ошибке:ifelse() не работает в Legend 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()', здесь он гарантирует, что 'круглые()' и 'КТ [10]' ОБА работайте правильно. Также я думаю, что в вашем коде есть ошибка. – rnorouzian

+0

Что вы думаете об ошибке? Кроме того, я проверял bquote(), это была причина, по которой у вас была ошибка. Bquote оценивает аргументы, которые вы предоставляете в качестве объекта языка, paste() возвращает строку. Для легенды строка работает лучше. –

+0

Уважаемый Динеш, спасибо за ваше обновление. Во-первых, ваш код не позволяет индексировать в '' CT '[10] ', чтобы показывать правильно, а также пропустил ** полужирный шрифт **. Во-вторых, измените 'Gi' на' .25', чтобы найти ошибку, это дополнительный '.' во второй части вашего кода. – rnorouzian