3
complete.cases
またはanyNA
はどちらも1行目でFALSEを返しません。彼らのドキュメントに基づいて、私は間違ったドキュメントを読んでいるのですか?complete.casesとanyNAは行内にNAを検出しませんか?
csv<-data.frame(c(100,50,100),c(1,1,1),c(NA,12,NA))
csv$complete<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && complete.cases(x)}) #check that column_1==100, and column_2=1, and no missing values in the row
csv$complete2<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && anyNA(x, recursive = FALSE)})
> csv
c.100..50..100. c.1..1..1. c.NA..12..NA. complete complete2
1 100 1 NA TRUE TRUE
2 50 1 12 FALSE FALSE
3 100 1 NA TRUE TRUE
あなたはこれを考慮することができます。 'TRUE && complete.cases(c(1,2、NA))'は 'TURE && c(TRUE、TRUE、FALSE)'を返し、 'TRUE'を返します。 '&&'を使うときは最初のTRUEだけが使われていると思いますが、関数の中でallを使って '&'を試すことができます。 – Psidom
'anyNA'は期待通りに動作しているようです(少なくとも1つのNAがあればTRUE、それ以外の場合はFALSE)。 @Psidomが示すように、 'complete.cases'は、行の各要素に対して別々の真理値を持つベクトルを返します。 'isTRUE(c(TRUE、TRUE、FALSE))'は 'FALSE'を返すので、@PsidomはRがそのベクトルの最初の値だけを見ていることが正しいかもしれません。実際、カラム1とカラム3を切り替えると、最初の論理テストは 'FALSE FALSE FALSE'を返します。これは、' complete.cases 'によって返されたベクトルの最初の要素だけが使用されていることを示唆しています。 – eipi10
興味深いですが、なぜ 'anyNA()'を '!isTRUE(anyNA(x、recursive = FALSE))'に置き換えても正しい結果が得られませんか?私は 'isTRUE(anyNA(c(1,2、NA)))'でそれをテストし、期待通りにTRUEを返しました – Rilcon42