使用dplyr和select_if从数据框中删除列表列

ell*_*iot 5 r list dplyr

是否有可能dpyr select像删除单个列一样删除数据框中的所有列表列?

df <- tibble(
  a = LETTERS[1:5],
  b = 1:5,
  c = list('bob', 'cratchit', 'rules!','and', 'tiny tim too"')
)


df %>% 
  select_if(-is.list)
Error in -is.list : invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)

这似乎是一个可行的解决方法,但想知道是否可以使用完成select_if

df %>%
  select(-which(map(df,class) == 'list'))
Run Code Online (Sandbox Code Playgroud)

mar*_*kus 3

使用Negate

df %>% 
  select_if(Negate(is.list))
# A tibble: 5 x 2
  a         b
  <chr> <int>
1 A         1
2 B         2
3 C         3
4 D         4
5 E         5
Run Code Online (Sandbox Code Playgroud)

还有一个purrr::negate会给出相同的结果。