уникальные строки в dplyr: row_number () из tbl_dt не соответствует tbl_df

en bref:

Мне интересно, как получить уникальные строки изdata.table где-то вдольdplyr рабочий процесс. Начиная с v0.2 я могу использоватьrow_number==1 (увидеть: Удалить дублированные строки с помощью dplyr)

НО!

tbl_df(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1) работает.

tbl_dt(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1) не делает.это ошибка?

настроить:
library(dplyr)
library(data.table)
library(microbenchmark)

little <- expand.grid(rep(letters,121),rep(letters,121)) # my 10M row dataset.
tbl_dt(little) %>% group_by(Var1,Var2) %>% filter(row_number() == 1)
результат:
> Error in rank(x, ties.method = "first") : 
> argument "x" is missing, with no default

вот как я на самом деле нашел это бытьсломанный, Я спрашивал:

так или иначе?

Я могу использоватьunique.data.table метод:

 dt_u <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           unique(.) %>% 
           tbl_dt(.) }

я могу использоватьsummarise затемselect прочь новый col:

dt_ss <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           summarise( n = n() ) %>% 
           select( -(n) ) }

я могу использоватьrow_number() == 1 # НЕ РАБОТАЕТ для tbl_dt!

 dt_rn <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) %>% 
           filter( row_number() == 1 ) }

и так далее сtbl_df() эквиваленты.

сравнительный анализ эквивалентных методов data.table / data.framemicrobenchmark(...,times=20):
> Unit: milliseconds
>     expr       min        lq    median        uq       max neval
>  dt_ss()  579.0385  618.0002  661.9056  694.0705  764.2221    20
>  dt_u()   690.1284  729.8723  756.5505  783.7379  897.4799    20
>  df_ss()  419.7841  436.9871  448.1717  461.7023  523.2798    20
>  df_u()  3971.1699 4044.3663 4097.9848 4168.3468 4245.8346    20
>  df_rn()  646.1497  687.3472  711.3924  724.6235  754.3166    20

Ответы на вопрос(2)

Ваш ответ на вопрос