我有一个包含两个数字行的表,其中一个设置为键。我想对我的 data.table
进行子集化按数字键值,但它似乎不起作用。当我将其转换为字符时,它会起作用。
你能帮我理解为什么会这样吗?我正在使用 data.table 1.8.6。
谢谢一堆。下面是测试代码:
> ID <-c(rep(210, 9), rep(3917,6))
> Count <- c(1,1,0,1,1,1,1,1,1,1,1,1,1,0,1)
> x <- data.table(ID, Count)
>
> # numeric key doesn't work with i argument
> setkey(ID)
[1] 210 210 210 210 210 210 210 210 210 3917 3917 3917 3917 3917 3917
> x[210,list(ID, Count)]
ID Count
1: NA NA
>
> # create character key
> x$charID <- as.character(x$ID)
> setkey(x, charID)
> x["210",list(ID, Count)]
charID ID Count
1: 210 210 1
2: 210 210 1
3: 210 210 0
4: 210 210 1
5: 210 210 1
6: 210 210 1
7: 210 210 1
8: 210 210 1
9: 210 210 1
最佳答案
您需要在 data.table 中发送数字键。这可以使用 J
轻松完成.或者在列表中
注意设置key的时候需要指定data.table
例如
setkey(x, ID)
x[J(210)]
ID Count
1: 210 1
2: 210 1
3: 210 0
4: 210 1
5: 210 1
6: 210 1
7: 210 1
8: 210 1
9: 210 1
要么
x[list(210)]
ID Count
1: 210 1
2: 210 1
3: 210 0
4: 210 1
5: 210 1
6: 210 1
7: 210 1
8: 210 1
9: 210 1
关于r - 为什么用数字键设置子集不适用于 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666298/