2016-05-11 14 views
0

R言語では、aを返す演算子が必要です。 bである。ただし、aまたはbのいずれかがNAであり、他方がFである場合を除く。R:FalseまたはNAがFalseを返す

現在、F | NAはNAを返します。Fを返すことを望みます。

この関数はベクターでも機能します。

+0

「TRUE | 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

だから 'TRUE | NA 'は「NA」を返さないはずですか?... – Cath

+0

上記のコメントに私の間違いがあります。私が最初に言ったように、この関数はF | NAを除いて "or"関数と同じものを返すべきです。 – Max

+2

if((is.na(a)&!b)|(is.na(b)&!a))そうでなければ、a | b'はうまくいくはずです...(ifelse((is.na (a)&!b)|(is.na(b)&!a)、FALSE、a | b) 'ベクトルの場合 – Cath

関連する問題