NA是逻辑类型,如果结果不明确,NA则返回带有的逻辑运算符NA。下面,NA OR TRUE计算结果为TRUE,因为至少有一个侧面的计算结果为TRUE,但NA OR FALSE回报NA,因为我们不知道是否NA会一直TRUE或FALSE
NA | TRUE # [1] TRUE # TRUE | TRUE is TRUE and FALSE | TRUE is also TRUE. NA | FALSE # [1] NA # TRUE | FALSE is TRUE but FALSE | FALSE is FALSE. NA & TRUE # [1] NA # TRUE & TRUE is TRUE but FALSE & TRUE is FALSE. NA & FALSE # [1] FALSE # TRUE & FALSE is FALSE and FALSE & FALSE is also FALSE.
如果要基于包含的某些列对数据集进行子集化,这些属性将很有用NA。
df <- data.frame(v1=0:9, v2=c(rep(1:2, each=4), NA, NA), v3=c(NA, letters[2:10])) df[df$v2 == 1 & !is.na(df$v2), ] # v1 v2 v3 #1 0 1 <NA> #2 1 1 b #3 2 1 c #4 3 1 d df[df$v2 == 1, ] v1 v2 v3 #1 0 1 <NA> #2 1 1 b #3 2 1 c #4 3 1 d #NA NA NA <NA> #NA.1 NA NA <NA>