2016-05-11 4 views
0

На языке R мне нужен оператор, который возвращает | b, за исключением случаев, когда a или b является NA, а другой - F.R: False или NA, который возвращает False

В настоящее время F | NA возвращает NA, я бы хотел, чтобы он вернулся F.

Эта функция должна работать с векторами.

Любая идея?

+0

Что относительно 'ИСТИННОГО | NA'? 'NA | NA'? – Cath

+0

@Cath, в настоящее время, T | NA возвращает NA и NA | NA возвращает NA. Такое поведение следует сохранить. – Max

+1

С моей версией R (3.3.0) 'TRUE | NA' возвращает 'TRUE' .... – RHertel

ответ

0

Понял!

myor = function(a,b){ 
    !((is.na(a) & !b) | (is.na(b) & !a) | (!a & !b)) 
} 

> myor(T,T) 
[1] TRUE 
> myor(T,F) 
[1] TRUE 
> myor(F,F) 
[1] FALSE 
> myor(F,NA) 
[1] FALSE 
> myor(NA,NA) 
[1] NA 
> myor(T,NA) 
[1] TRUE 
+0

Итак 'ИСТИНА | NA' не должен возвращать 'NA'? ... – Cath

+0

моя ошибка в комментарии выше. Как я сказал в начале, эта функция должна возвращать то же самое, что и «или» функция |, за исключением случаев, когда F | NA. – Max

+2

, тогда 'if ((is.na (a) &! B) | (is.na (b) &! A)), тогда FALSE else a | b' должно работать ... (или' ifelse ((is.na (a) &! b) | (is.na (b) &! a), FALSE, a | b) 'для векторов – Cath

Смежные вопросы