r - 为什么用数字键设置子集不适用于 data.table

标签 r data.table

我有一个包含两个数字行的表,其中一个设置为键。我想对我的 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/

相关文章:

r - ggplot2 : Can't add ` ` to a ggplot object

css - Shiny 的 tabPanel 中选项卡的背景颜色

r - 将向量输出与其他列一起转换为 data.table 中的列?

r - 如何对data.table中的每一行进行排序?

r - 根据多列上的条件创建新列

r - 在 R 中,将两个数据帧按元素相乘并乘以一个向量

r - 使用 xlsx 包将数据从 R 插入到 Excel 时出现问题

r - opencpu/R内存限制

r - 以简单的方式在保持原始顺序的同时聚合数据帧

r - 将列表列添加到 R 中的数据表会返回不一致的输出 - 功能还是错误?