TRUEFALSE 和 NA
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>