我对它的工作原理有点惊讶data.table
:
> library(data.table)
data.table 1.8.2 For help type: help("data.table")
> dt <- data.table(a=11:20, b=21:30, c=31:40, key="a")
> dt[list(12)]
a b c
1: 12 22 32
> dt[list(12), b]
a b
1: 12 22
> dt[list(12)][,b]
[1] 22
我想要做的是在与选择匹配的行中获取单个列(或表达式)的值。我看到我必须将键作为列表传递,因为原始数字表示行号而不是键值。所以上面的第一个对我来说很清楚。但是为什么第二个和第三个子集表达式产生不同的结果对我来说似乎相当混乱。我想得到第三个结果,但希望能够以第二种方式编写它。
有什么好的理由为什么同时为行和列设置一个 data.table 子集总是包括键值和计算结果?除了上面的双子集之外,是否有一种语法上更短的方法来获得单个结果?
我在 R 2.15.1 上使用 data.table 1.8.2。如果你不能重现我的例子,你不妨考虑一个因素作为关键:
dt <- data.table(a=paste("a", 11:20, sep=""), b=21:30, c=31:40, key="a")
dt["a11", b]