首页 > 解决方案 > 在数据框列表中删除带有 NA 的列

问题描述

考虑一个大型数据框列表,称为GEER其中一些列仅包含NA. 在 R 中,如何NA从所有元素中删除所有包含的列。

*并非所有元素都有包括NAs 在内的项目。

> 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 ...

我很感激任何建议。

标签: rlistna

解决方案


您可以remove_empty从包中使用janitor

library(janitor)

lapply(GEER, janitor::remove_empty, which = "cols")

推荐阅读