#r #list #na
#r #Список #na
Вопрос:
Рассмотрим большой список фреймов данных, вызываемых GEER
там, где некоторые столбцы содержат только NA
. В R, как я могу удалить все столбцы, относящиеся NA
ко всем элементам.
* Не все элементы содержат элементы, включая NA
s.
> GEER
$ ch_0 :'data.frame': 74 obs. of 6000 variables:
..$ TIME : Factor w/ 527 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME : Factor w/ 100 levels "XTC_R" "DCC_S" "HG_CC" ...
..$ K_207 : num [1:100] 10.7 18.5 18.7 10.3 62.6 ...
..$ K_220 : num [1:100] 33.2 70.6 13.5 13.7 15.5 ...
..$ M_220 : num [1:100] 10.3 18.04 18.3 9.7 5.7 ...
..$ M_207 : num [1:100] 4.8 4.5 4.0 6.5 5.1 ...
$ ch_1290 :'data.frame': 380 obs. of 6000 variables:
..$ TIME : Factor w/ 150 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME : Factor w/ 100 levels "KTC_D" "DSC_C" "KL_SC" ...
..$ K_507 : num [1:100] 10.7 18.5 18.7 10.3 12.6 ...
..$ K_444 : num [1:100] NA NA NA NA NA ...
..$ M_513 : num [1:100] NA NA NA NA NA ...
..$ M_102 : num [1:100] NA NA NA NA NA ...
..$ K_505 : num [1:100] 14.0 18.3 14.7 11.2 12.6 ...
Выводом желания будет:
> GEER_out
$ ch_0 :'data.frame': 74 obs. of 6000 variables:
..$ TIME : Factor w/ 527 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME : Factor w/ 100 levels "XTC_R" "DCC_S" "HG_CC" ...
..$ K_207 : num [1:100] 10.7 18.5 18.7 10.3 62.6 ...
..$ K_220 : num [1:100] 33.2 70.6 13.5 13.7 15.5 ...
..$ M_220 : num [1:100] 10.3 18.04 18.3 9.7 5.7 ...
..$ M_207 : num [1:100] 4.8 4.5 4.0 6.5 5.1 ...
$ ch_1290 :'data.frame': 380 obs. of 5997 variables:
..$ TIME : Factor w/ 150 levels "2020-01" "2020-03" "2020-04" ...
..$ NAME : Factor w/ 100 levels "KTC_D" "DSC_C" "KL_SC" ...
..$ K_507 : num [1:100] 10.7 18.5 18.7 10.3 12.6 ...
..$ K_505 : num [1:100] 14.0 18.3 14.7 11.2 12.6 ...
Я ценю любое предложение.
Ответ №1:
Вы можете использовать remove_empty
из пакета janitor
:
library(janitor)
lapply(GEER, janitor::remove_empty, which = "cols")
Ответ №2:
В base R
мы можем использовать Filter
с lapply
lapply(GEER, function(dat) Filter(function(x) any(!is.na(x)), dat))