complete.cases和anyNA没有检测到行中的NA?

时间:2016-09-22 01:21:57

标签: r

为什么{1}}或complete.cases都没有为第1行返回FALSE?基于他们的文档,他们似乎应该......我在阅读文档错了吗?

anyNA

1 个答案:

答案 0 :(得分:3)

您眼睛的第一个明显异常表示无法理解&&&之间的差异。匿名函数被赋予一个3元素向量,complete.cases为第一行返回:

complete.cases( c(100,1,NA) )
[1]  TRUE  TRUE FALSE

&&函数仅处理给定的每个向量的第一项,因此它为第一行返回TRUE。可以说这里警告可能是合适的。如果您想要测试缺少NA的内容并且它恰好是正在考虑的向量,我会使用all( !is.na(.))

csv$complete<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && all(!is.na((x))  )}) 

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    FALSE      TRUE
2              50          1            12    FALSE     FALSE
3             100          1            NA    FALSE      TRUE

anyNA应该被&#34;!&#34;否定。如果(从上下文看来)你预计所有的complete2也都是FALSE。