我有一个数据集,仅仅通过查看数据集就可以清楚地看到其中明显的NA值。
> dput(bmi.cig)
structure(list(MSI.subset.BMI = structure(c(4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 1L, 2L, 3L, 3L, 1L, 3L, 3L, 1L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("0", "1", "2",
"NA"), class = "factor"), MSI.subset.Cigarette = structure(c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 1L, 2L, 1L, 2L,
2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("1",
"2", "NA"), class = "factor")), .Names = c("MSI.subset.BMI",
"MSI.subset.Cigarette"), row.names = c(NA, 30L), class = "data.frame")
> head(bmi.cig)
MSI.subset.BMI MSI.subset.Cigarette
1 NA NA
2 NA NA
3 NA NA
4 NA NA
5 NA NA
6 NA NA
我希望删除任何一列中含有NA值的行,因此我正在使用ForImp
软件包中的列表删除函数ld
。然而,R并未识别到NA值。
is.na(bmi.cig$MSI.subset.BMI)
我理解
> is.na(bmi.cig$MSI.subset.BMI)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[26] FALSE FALSE FALSE FALSE FALSE
所以一旦我使用ld
函数,就只会得到一个空的数据集。
NA
,而是字符串"NA"
。请参见levels(bmi.cig$MSI.subset.BMI)
。 - nicola