我可以使用setkey()获取data.table中数字列的所有行吗?

时间:2015-11-27 14:31:41

标签: r data.table

如果我在字符列data.table上使用setkey,则返回所有行,例如

DT <- data.table(V1=c(1L,2L),
V2=LETTERS[1:3],
V3=round(rnorm(4),4),
V4=1:12)

setkey(DT,V2)

DT['A'] = 
   V1 V2      V3 V4
1:  1  A  0.6741  1
2:  2  A  0.5648  4
3:  1  A -1.0006  7
4:  2  A  0.5047 10

但这不适用于数字列,例如

DT <- data.table(V1=c(1L,2L),
    V2=LETTERS[1:3],
    V3=round(rnorm(4),4),
    V4=1:12)
setkey(DT,V1)
1:  1  C -1.3419  3

有办法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用J(1).(1),如下所示:

DT[.(1)]
#    V1 V2      V3 V4
# 1:  1  A -0.0780  1
# 2:  1  C  1.0128  3
# 3:  1  B -0.0780  5
# 4:  1  A  1.0128  7
# 5:  1  C -0.0780  9
# 6:  1  B  1.0128 11
DT[J(1)]
#    V1 V2      V3 V4
# 1:  1  A -0.0780  1
# 2:  1  C  1.0128  3
# 3:  1  B -0.0780  5
# 4:  1  A  1.0128  7
# 5:  1  C -0.0780  9
# 6:  1  B  1.0128 11