排除仅包含NA的列

时间:2016-03-17 11:14:42

标签: r filter dataframe

我的问题是否与之前的问题非常相似(Remove rows with NAs (missing values) in data.frame)。我想以这样的方式过滤我的矩阵,即只有NA的所有列都将消失。我希望列中包含NA和数字的混合。因此,在下面的示例中,我想删除名为 mmul cfam 的列,并保留其余部分。

             gene hsap mmul mmus rnor cfam
1 ENSG00000208234    0   NA   NA   NA   NA
2 ENSG00000199674    0   NA    2    2   NA
3 ENSG00000221622    0   NA   NA   NA   NA
4 ENSG00000207604    0   NA   NA    1   NA
5 ENSG00000207431    0   NA   NA   NA   NA
6 ENSG00000221312    0   NA    2    3   NA

我希望我的新矩阵看起来像这样:

             gene hsap  mmus rnor 
1 ENSG00000208234    0   NA   NA  
2 ENSG00000199674    0    2    2  
3 ENSG00000221622    0   NA   NA  
4 ENSG00000207604    0   NA    1  
5 ENSG00000207431    0   NA   NA  
6 ENSG00000221312    0    2    3  

1 个答案:

答案 0 :(得分:1)

您正在寻找all(is.na())

DF = data.frame(Col1 = c(NA,NA),Col2 = c(1,1));
DFOut = DF[!apply(DF,2,function(x) all(is.na(x)))]