文字ラベルの2つのベクトルを調べ、Ifステートメントに基づいて適切なラベルを印刷する関数を作成しようとしています。ベクトルの1つにNAが設定されているときに問題に遭遇しています。IfステートメントでNA以上の文字列を選択するR
私は私の機能切り捨てます:
eventTypepriority=function(a,b) {
if(is.na(a)) {print(b)}
if(is.na(b)) {print(a)}
if(a=="BW"& b=="BW",) {print("BW")}
if(a=="?BW"& b=="BW") {print("?BW")}
...#and so on
}
一部のデータ:
a=c("Pm", "BW", "?BW")
b=c("PmDP","?BW",NA)
c=mapply(eventTypepriority, a,b, USE.NAMES = TRUE)
機能は、私は私のif文で指定されてきたラベルを選択し、最初の2のために正常に動作します。それは第3の対になった場合しかし、私はこのエラーが表示されます。
Error in if (a == "?BW" & b == "BW") { :
missing value where TRUE/FALSE needed
私は、これは「あるの外、if文最初であるB = NA、その場所であるため、これは推測しています。 na 'ステートメントで、欠損値を無視する必要があります。
これを処理する方法はありますか?私は本当にすべてのラベルとNAに条件文を追加するのではなく、私も試みた:
-is.null(同じエラーメッセージ)
-Regular式:様々な形式で
if(a==grepl([:print:]) & b==NA) {print(a)}
、IF(A == grepl(含む:プリント:) ...無駄ません私は「エラー:予期しない 『を受け取る。[』または任意の文字Rは、これは間違っている私に教えて最初のが好きではなかった
すべてのコメントや考えをいただければ幸いです^ _^
ああ!これは完全に機能します。私は何かが簡単でないことを知っていた。ありがとう!! – etgriffiths