使用dplyr管道删除数据帧列表中的空列

使用dplyr管道删除数据帧列表中的空列,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个数据帧列表: DF 列表您可以使用两个select功能: library(dplyr) library(purrr) LIST %>% map(~ .x %>% select(contains("1")) %>% select_if(!all(is.na(.)))) #[[1]] # col_a1 #1 a #2 b #[[2]] #data frame with 0 columns and 2 rows 仅使用一个select功能,我们

我有一个数据帧列表:

DF


列表您可以使用两个
select
功能:

library(dplyr)
library(purrr)

LIST %>% map(~ .x %>% select(contains("1")) %>% select_if(!all(is.na(.))))


#[[1]]
#  col_a1
#1      a
#2      b

#[[2]]
#data frame with 0 columns and 2 rows
仅使用一个
select
功能,我们可以执行以下操作:

LIST %>% map(~ .x %>% select_if(str_detect(names(.x), '1') & 
                               colSums(!is.na(.x)) > 0))

同样,在R基中:

lapply(LIST, function(x) x[colSums(!is.na(x)) > 0 & grepl('1', names(x))])
library(dplyr)
library(purrr)

LIST %>% map(~ .x %>% select(contains("1")) %>% select_if(!all(is.na(.))))


#[[1]]
#  col_a1
#1      a
#2      b

#[[2]]
#data frame with 0 columns and 2 rows
LIST %>% map(~ .x %>% select_if(str_detect(names(.x), '1') & 
                               colSums(!is.na(.x)) > 0))
lapply(LIST, function(x) x[colSums(!is.na(x)) > 0 & grepl('1', names(x))])