在数据表中的二进制搜索中使用整数与字符

时间:2017-02-23 16:10:12

标签: r data.table binary-search

使用整数而不是字符作为键,用于带数据表的二进制搜索,似乎无法按预期工作。

让我们看看:

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

我们在搜索中只使用一个变量,我认为应该可以使用简单的表示法,而不是。()。那么,在任何情况下都必须使用。()和整数吗?

提前感谢您的帮助。

0 个答案:

没有答案