2014-02-19 94 views
2

得到一个单一的元素我想从data.tableR:如何data.table

library(data.table) 
dt <- data.table(data.frame(prices=c(1.1,2.4,5.3), 
          dates = c(2011-01-04,2011-01-05,2011-01-03))) 
dt 
    date  value 
1: 2011-01-04 1.1 
2: 2011-01-05 2.4 
3: 2011-01-03 5.3 
> dt[1,1] 
[1] 1 
> dt[1] 
    date  value 
1: 2011-01-04 1.1 
> dt[1][1] 
    date  value 
1: 2011-01-04 1.1 

的第一要素,我需要得到的第一次约会。我不知道什么,我在这里失踪:(

非常感谢。我与输出有点糊涂。

DT [1日期]
[1] 2011-01- 04
等级:2011-01-03 2011-01-04 2011-01-05(?任何想法是什么级别的含义)

这也适用ST $日期[1]实现是一样的数据帧。

+0

'data.table'对象从data.frames继承,所以你可以使用'$',但是在较大的作业上它会慢很多。 –

+0

@IShouldBuyABoat对于单列检索'$'将比'[.data.table'快几个数量级,因为后一个函数 – eddi

+0

OP的开销很大,'data.frame()'位不需要 – eddi

回答

4

也许:

dt[1, date] 

一个使用data.table的的乐趣是在“J”位置的表达在现有的命名列的上下文中得到评估。无需使用with()

+0

谢谢,我对输出有点困惑。> dt [1,date] [1] 2011-01-04 级别:2011-01-03 2011-01-04 2011-01-05 –

+0

哦,那你呢有一个因子列,但从打印输出中不清楚。 –

+0

的确是它的一个因子专栏。我应该阅读更多。但我用st < - data.frame(prices = c(1.1,2.4,5.3),dates = c(2011-01-04,2011-01-05,2011-01-03))来创建数据框。 R自动使它成为一个因素? –

-3

尝试dt[1,"date"]

我假设你正在寻找的输出是R中的什么样子整数第一列是实际列名的数据帧2011-01-04

dt[1,2]

。因此,如果dt是一个数据帧dt[1,1]返回的第一行的名称只是1。我认为这里发生了类似的事情。

+0

dt [1,“date”],我认为 – Troy

+0

我不认为引号会有帮助。 user6179需要明白,问题不在于数据框。 –

+0

是的,第二个表达式被评估,在这里它返回“日期值” –