2

我有一个数据框,称为 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

谢谢!

4

3 回答 3

4
gen <- gen[sapply(gen, function(x) all(!is.na(x)))]
于 2013-08-01T00:24:56.087 回答
2
dfrm[ , sapply(dfrm, function(x){ !any(is.na(x)) } )

您可能想改用这个变体:

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

如果向量中有 Inf 或 -Inf 值,则它们不会被删除或使用基于 的选择来标识is.na

于 2013-08-01T00:25:04.247 回答
1

只需使用这个:

gen[colSums(is.na(gen)) == 0]
于 2013-08-10T16:07:08.703 回答