我有一个名为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
谢谢!
答案 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]