我遇到了R。
中data.table包的问题考虑一个简单的数据集:
require(data.table)
dat <- read.table(text=" x y
[1,] -1 99
[2,] 5 4
[3,] 10 -2
[4,] 600 0
[5,] -16 1
[6,] 0 55", header=TRUE)
现在假设我想在此数据集上使用data.table(主要是因为我想进行二分查找)
DT = data.table(dat, key="x")
setkey(DT, x) #not sure if this is necessary
如果我正在寻找的密钥实际上在数据集中,它可以正常工作:
DT[J(-16)]
x y
1: -16 1
但是,如果我要求一个不属于数据的密钥:
> DT[J(-22)]
x y
1: -22 NA
当我在寻找与此处相同的结果时:
> DT[x==-22]
Empty data.table (0 rows) of 2 cols: x,y
这是一个简单的例子,但它返回一个长度为1的实际数据集,如果我想进一步处理该结果(在一个循环中,偶尔会创建空子集),这非常繁琐。
此外,如果有很多列似乎用一些随机数据填充其中一些,以及NA&#39; s,这就是我在实际数据中看到的:
我有一组包含变量的数据集,关键是studyid。我要求studyid的子集不是数据的一部分:
DTpharm[J(154759)]
studyid RXSUP RXAMT RXMD NDC GPI_CD class date
1: 154759 NA NA NA 9218868437227407266 9218868437227407266 NA <NA>
NDC和GPI变量是整数64。 (注意值是如何相同的?!)
我错过了什么/你知道如果我要求一个不存在的密钥的二进制搜索方法会返回一个空集吗?