使用整数而不是字符作为键,用于带数据表的二进制搜索,似乎无法按预期工作。
让我们看看:
library(data.table)
dt <- data.table(c1 = c(1,1,2,1,5), c2 = c("B","B","F","C","B"))
# setkey with integer
setkey(dt,c2)
# selecting c2 = "B"
dt["B"]
# result:
# c1 c2
#1: 1 B
#2: 1 B
#3: 5 B
这是对的。但是,如果我们对整数变量做同样的事情:
# setkey with C1
setkey(dt,c1)
# selecting c1 = 1
dt[1]
# result:
# c1 c2
# 1: 1 B
这不正确。
但它使用。()表示法正常工作:
dt[.(1)]
# result:
# c1 c2
#1: 1 B
#2: 1 B
#3: 1 C
我们在搜索中只使用一个变量,我认为应该可以使用简单的表示法,而不是。()。那么,在任何情况下都必须使用。()和整数吗?
提前感谢您的帮助。