【发布时间】:2016-02-20 15:00:25
【问题描述】:
我刚刚发现了这个新功能,在我看来它是 !is.na 的改进版本,可能包含在 apply(df, 1) 中。我是正确的还是以下:
> a<-c(1,2,4,NA,6,8)
> identical(complete.cases(a), !is.na(a))
[1] TRUE
这并不总是正确的?
【问题讨论】:
-
complete.cases逐行检查 NA,如果存在则返回 FALSE。它在data.frame上更有用,因为!is.na(a)将返回一个与data.frame相同维度的矩阵,而complete.cases将返回一个向量,每个向量对应data.frame的每一行。本质上,DF[complete.cases(DF), ]将删除所有至少 1 NA 的行,这是一个方便的工具。尽管您显示的用法完全有效,但我没有在矢量上使用它们。 -
虽然在向量上的快速基准测试表明
!is.na的速度是原来的两倍(尽管我们谈论的是 0.05 和 0.1 秒)。 -
@Arun -- 我在发布答案时没有看到这条评论。
-
@mnel,不用担心,+1。和往常一样清楚:)