NA无缘无故出现
NA showing up for no reason
我进入了
data[data$Ozone>31 & data$Temp>90,]
对数据帧进行子集化,但新帧包含 "NA" 的某些行,这些行肯定不存在。这是为什么?
如果列中有 NA 值,即使我们转换为逻辑向量,它仍然会显示为 NA。为避免这种情况,我们还可以 is.na
也为子集创建逻辑向量。
data[data$Ozone>31 & !is.na(data$Ozone) & data$Temp>90 & !is.na(data$Temp),]
即如果另一列中的相应元素为 NA
,即使一行中有 TRUE
值也可以转为 NA
TRUE & NA
#[1] NA
或者如果两者都是 NA
NA & NA
#[1] NA
但是,FALSE
和 NA returns FALSE
FALSE & NA
#[1] FALSE
通过使用is.na
,我们得到FALSE
的return值(对于上面的例子)
TRUE & !is.na(NA)
#FALSE
返回 NA
将创建新的 NA 行。
数据
set.seed(24)
data <- as.data.frame(matrix(sample(c(NA, 1:120), 2*500, replace=TRUE),
ncol=2, dimnames=list(NULL, c("Ozone", "Temp"))))
我进入了
data[data$Ozone>31 & data$Temp>90,]
对数据帧进行子集化,但新帧包含 "NA" 的某些行,这些行肯定不存在。这是为什么?
如果列中有 NA 值,即使我们转换为逻辑向量,它仍然会显示为 NA。为避免这种情况,我们还可以 is.na
也为子集创建逻辑向量。
data[data$Ozone>31 & !is.na(data$Ozone) & data$Temp>90 & !is.na(data$Temp),]
即如果另一列中的相应元素为 NA
,即使一行中有TRUE
值也可以转为 NA
TRUE & NA
#[1] NA
或者如果两者都是 NA
NA & NA
#[1] NA
但是,FALSE
和 NA returns FALSE
FALSE & NA
#[1] FALSE
通过使用is.na
,我们得到FALSE
的return值(对于上面的例子)
TRUE & !is.na(NA)
#FALSE
返回 NA
将创建新的 NA 行。
数据
set.seed(24)
data <- as.data.frame(matrix(sample(c(NA, 1:120), 2*500, replace=TRUE),
ncol=2, dimnames=list(NULL, c("Ozone", "Temp"))))