2016-03-17 4 views
2

Мой вопрос, если он похож на предыдущий вопрос (Remove rows with NAs (missing values) in data.frame). Я хотел бы отфильтровать мою матрицу таким образом, чтобы весь столбец с только NA исчезнет. Я хочу кинуть колонку, состоящую из смеси NA и чисел. Поэтому в приведенном ниже примере я хотел бы избавиться от столбцов с именем mmul и cfam и сохранить остальные.Исключить столбцы, которые состоят только из NA's

   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

Может попробовать 'пеленгации [colSums (is.na (ДФ)) ! = nrow (df)] ' –

+0

Или аналогично' df [!! colSums (! is.na (df))] ' –

+0

Или' df [colSums (! is.na (df))> 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)))] 
Смежные вопросы