R data.table setkey by dplyr::group_by?

yue*_*uez 5 r dplyr data.table

我一起使用 data.table 和 dplyr。我最近注意到 dplyr::group_by 也可以将 key 设置为 data.table 对象。

# R version 3.1.0    
library(data.table) # 1.9.2
library(dplyr) # 0.1.3

dt <- data.table(A=rep(c("a", "b"), times=c(2, 3)), B = rep(1, 5))
tables()
#      NAME NROW MB COLS KEY
# [1,] dt      5  1 A,B
# Total: 1MB

group_by(dt, A)
tables()
#      NAME NROW MB COLS KEY
# [1,] dt      5  1 A,B  A
# Total: 1MB
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会发生这种情况。这是故意的吗?据我所知,Hadley 正试图使 dplyr 与 data.table 兼容。

(如果可能的话,我也想知道 key 在 data.table 中是如何实现的。很好奇为什么 setkey 可以就地改变它?)

谢谢


根据 G. Grothendieck 的要求:

library(data.table)
dt <- data.table(A = rep(c("a", "b"), times=c(2, 3)),
                 B = rep(1, 5))
dplyr::group_by(dt, A)
# Source: local data table [5 x 2]
# Groups: A
#
# Error in if (is.na(rows) || rows > getOption("dplyr.print_max")) { :
#   missing value where TRUE/FALSE needed

tables()
#      NAME NROW MB COLS KEY
# [1,] dt      5  1 A,B  A
# Total: 1MB
Run Code Online (Sandbox Code Playgroud)

我经常使用这两个包,我想知道所有细节以避免错误。