我使用了很多data.table包。使用二进制搜索进行子集,查询或搜索(或任何您想称呼的对象)的例子很多,这显然比矢量扫描快得多。这是帮助文件的摘录。
DT["a"] # binary search (fast)
DT[x=="a"] # vector scan (slow)
但是,如果要搜索的列不是一个因素(或字符),而是一个整数,将会发生什么。
cpt <- c(23456,23456,10000,44555,44555)
description <- c("tonsillectomy","tonsillectomy in >12 year old","brain transplant","castration","orchidectomy")
cpt.desc <- data.table(cpt,description)
setkey(cpt.desc,cpt)
cpt.desc[10000,]
这不起作用,因为整数10000被解释为该数据表中不存在的第10000行。
如果我们修改语法,那么我们将得到想要的东西。
cpt.desc[cpt==10000,]
但是,看起来好像是慢速矢量扫描方法。 data.table包中是否有针对整数的二进制搜索功能?感谢您对我们的帮助。
最佳答案
尝试cpt.desc[J(10000)]
。添加,"mult=all"
以获取所有匹配项。