2016-05-11 18 views
0

In der Sprache R brauche ich einen Operator, der ein | zurückgibt b, außer wenn entweder a oder b NA ist und der andere F ist.R: False oder NA, die False zurückgibt

Momentan ist F | NA gibt NA zurück, ich möchte, dass F zurückkommt.

Diese Funktion sollte mit Vektoren arbeiten.

Irgendeine Idee?

+0

was ist 'TRUE | NA'? 'NA | NA'? – Cath

+0

@Cath, derzeit T | NA gibt NA und NA | zurück NA gibt NA zurück. Dieses Verhalten sollte beibehalten werden. – Max

+1

Mit meiner R-Version (3.3.0) 'TRUE | NA' gibt 'TRUE' zurück .... – RHertel

Antwort

0

Verstanden!

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

Also 'TRUE | NA' sollte nicht 'NA' zurückgeben? ... – Cath

+0

mein Fehler in dem obigen Kommentar. Wie ich zu Beginn gesagt habe, sollte diese Funktion dasselbe wie die "oder" -Funktion | zurückgeben, außer wenn F | NA ist. – Max

+2

dann 'if ((is.na (a) &! B) | (is.na (b) &! A)) dann FALSE sonst a | b' sollte funktionieren ... (oder' ifelse ((is.na (a) &! b) | (ist.na (b) &! a), FALSCH, a | b) 'für Vektoren – Cath