访问data.table的单个单元/子集列

时间:2013-05-21 10:12:24

标签: r data.table

如何以data.table的方式访问data.frame中的单个单元格:

mdf <- data.frame(a = c("A", "B", "C"), b = rnorm(3), c = 1:3)
mdf[ mdf$a == "B", "c" ]
[1] 2

data.table上执行模拟,返回data.table,包括键列:

mdt <- data.table( mdf, key = "a" )
mdt[ "B", c ]
   a c
1: B 2

mdt[ "B", c ][ , c]
[1] 2

我是否错过了参数,或者是否必须像在最后一行那样完成?

2 个答案:

答案 0 :(得分:0)

一种方法是使用with=FALSE,但是您必须像j一样表达data.frame

R> mdt[ "B", "c", with=FALSE ]
   c
1: 2

答案 1 :(得分:0)

其中任何一个都会避免重复c,但效率不高,因为它们涉及计算第一个[]以及最终答案:

> mdt[ "B", ][["c"]]
[1] 2
> mdt[ "B", ][, c]
[1] 2