Удалить столбцы списка из фрейма данных, используя dplyr и select_if - PullRequest
0 голосов
/ 18 декабря 2018

Можно ли отбросить все столбцы списка из фрейма данных, используя 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 голосов
/ 18 декабря 2018

Мы можем использовать 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
0 голосов
/ 18 декабря 2018

Использование 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

Существует также purrr::negate, который дал бы тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...