我经常做
DT[CJ(colA = colA, colB = colB, unique=TRUE), on=c("colA","colB")]
# to complete missing levels
# or
DT[, CJ(colA = colA, colB = colB, unique=TRUE)][!DT, on=c("colA","colB")]
# to identify missing levels
# http://stackoverflow.com/a/36065607/1191259
如果我能少写colA
和colB
的次数,那就太好了。 这里的 FR 是为了
CJ(colA, colB, unique=TRUE, names=TRUE)
推断名称colA
和colB
,也许使用 data.frame() 和 data.table() ( make.names
?)使用的任何方法。
(我想,如果on=.Icols
是一回事,名称重复可能会进一步减少,但我会将其留给单独的 FR。)
所以帖子要更新...
CJ
将...
作为第一个参数,该函数将是泛型方法,因此我们需要将其更改为CJ(x, ...)
,这些更改可以一起进行# 1090
+1,我认为不需要names
参数 - 这应该是唯一的行为。 随着连接语法更改为使用“on”而不是setkey
这已成为我的一大症结。
我还希望看到unique = TRUE
是默认值 - 我想不出 _ever_ 不需要将参数唯一到CJ
。
@jangorecki我还没有接触 #1090 / #814 的东西。 最好是独立的,我想,除非我遗漏了什么
最有用的评论
+1,我认为不需要
names
参数 - 这应该是唯一的行为。 随着连接语法更改为使用“on”而不是setkey
这已成为我的一大症结。我还希望看到
unique = TRUE
是默认值 - 我想不出 _ever_ 不需要将参数唯一到CJ
。