Как удалить первые n строк по группам в dplyr - PullRequest
1 голос
/ 11 декабря 2019

Это должно быть легко, но когда я запускаю:

require(dplyr)
data.frame(a = c(1,1,1,2,2,2), b= c(1,2,3,4,5,6)) %>%
group_by(a) %>%
slice(-1:-2)

, ожидая data.frame(a = c(1,2), b = c(3,6)), я получаю следующую ошибку:

Error in UseMethod("slice") : 
  no applicable method for 'slice' applied to an object of class "c('grouped_df', 'tbl_df', 'tbl', 'data.frame')"

Не так много, чтобы действительно добавить - всемисчета и ответы здесь, это должно быть правильным решением. Кто-нибудь может помочь?

1 Ответ

4 голосов
/ 11 декабря 2019

Это может быть проблема, связанная с маскировкой функции slice из других пакетов, когда эти пакеты также загружены. Например, если мы используем xgboost::slice

data.frame(a = c(1,1,1,2,2,2), b= c(1,2,3,4,5,6)) %>%
  group_by(a) %>%
  xgboost::slice(-1:-2)

Ошибка в UseMethod («slice»): нет применимого метода для «slice», примененного к объекту класса «c ('grouped_df', 'tbl_df ',' tbl ',' data.frame ') "


Вместо этого укажите dplyr::slice

data.frame(a = c(1,1,1,2,2,2), b= c(1,2,3,4,5,6)) %>%
  group_by(a) %>%
  dplyr::slice(-1:-2)
# A tibble: 2 x 2
# Groups:   a [2]
#     a     b
#  <dbl> <dbl>
#1     1     3
#2     2     6

Или сделайте это в новом сеансе только сdplyr загружено

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