r - 在 R 中使用 data.table,当标准字段为整数时,一个子集或查询如何?

标签 r select subset data.table

我经常使用 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 被解释为该 data.table 中不存在的第 10000 行。

如果我们修改语法,就会得到我们想要的东西。
cpt.desc[cpt==10000,]

然而,这看起来很像慢矢量扫描方法。 data.table 包中是否有整数的二进制搜索功能?感谢您期待您的帮助。

最佳答案

试试 cpt.desc[J(10000)] .添加 ,"mult=all"获得所有比赛。

关于r - 在 R 中使用 data.table,当标准字段为整数时,一个子集或查询如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917971/

相关文章:

r - 在 Docker 容器中自定义 RStudio 环境

MYSQL:条件 _IN_ 无法正常工作

r - 循环 t.tests 以获取 r 中的数据帧子集

r - R 中是否存在包含用于过滤子集的当前行的变量?

r - 创建具有多个分层列组的数据透视表

r - 并行化不工作 sparkR

r - 从因素转换时间/日期

javascript - PHP:如何根据另一个选择的选择更改选择的值

select - KDB 从每组中选择第一行

r - 如何通过变量查找最新数据