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

时间:2018-12-18 12:40:14

标签: 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

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

df %>%
  select(-which(map(df,class) == 'list'))

2 个答案:

答案 0 :(得分:3)

使用<h1>To Do List</h1> <section> <h2>Add Task</h2> <input id="task" placeholder="Task..."/> <input type="button" id="addToList" value="Add"/> </section> <hr/> <section> <h2>Tasks</h2> <div id="app"> <!-- Area for the DHTML. --> </div> </section>

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 会给出相同的结果。

答案 1 :(得分:2)

我们可以使用Filter中的base R

Filter(Negate(is.list), df)
# A tibble: 5 x 2
#  a         b
#  <chr> <int>
#1 A         1
#2 B         2
#3 C         3
#4 D         4
#5 E         5