在R中删除NA中的列值

时间:2013-08-01 00:20:05

标签: r

我有一个名为gen的数据框,如下所示

     A       B       C       D       E
1    NA      4.35    35.3    3.36    4.87
2    45.2    .463    34.3    NA      34.4
3    NA      34.5    35.6    .457    46.3

我想删除有NA的。 (我知道na.omit为行做了它,但我似乎找不到列。最终结果如下:

     B       C       E
1    4.35    35.3    4.87
2    .463    34.3    34.4
3    34.5    35.6    46.3

谢谢!

3 个答案:

答案 0 :(得分:4)

gen <- gen[sapply(gen, function(x) all(!is.na(x)))]

答案 1 :(得分:2)

dfrm[ , sapply(dfrm, function(x){ !any(is.na(x)) } )

您可能想要使用此变体:

dfrm[ , sapply(dfrm, function(x){ all(is.finite(x)) } )

如果您在矢量中包含Inf或-Inf值,则不会删除或识别基于is.na的选择。

答案 2 :(得分:1)

请使用:

gen[colSums(is.na(gen)) == 0]