R:如何在data.table中获取单个元素

R:如何在data.table中获取单个元素,r,data.table,R,Data.table,我想从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-0

我想从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
库(data.table)
dt[1,1]
[1] 1
>dt[1]
日期值
1: 2011-01-04   1.1
>dt[1][1]
日期值
1: 2011-01-04   1.1
我需要第一次约会。我不确定我错过了什么:(

非常感谢。我对输出有点困惑

dt[1,日期]
[1] 2011-01-04
等级:2011-01-03 2011-01-04 2011-01-05(知道等级是什么意思吗?)

这也适用于st$date[1]。实现与数据帧相同。

尝试
dt[1,“date”]

我假设您要查找的输出是
2011-01-04

dt[1,2]

在R中的数据帧中,看起来像整数的第一列是实际的列名。因此,如果dt是一个数据帧
dt[1,1]
返回第一行的名称,它就是
1
。我想这里也发生了类似的事情。

也许:

dt[1, date]

使用data.table的乐趣之一是在现有命名列的上下文中计算“j”位置的表达式。无需使用
with()

dt[1,“date”],我想我不认为引号会有帮助。user6179需要理解的是,问题不是关于数据帧。是的,第二个表达式被计算,在这里它返回“date value”哦,好的。字符元素本身的计算有点琐碎。谢谢,我对输出有点困惑。>dt[1,date][1]2011-01-04级别:2011-01-03 2011-01-04 2011-01-05Oh,那么您有一个factor列,但从打印输出中看不清楚。实际上,这是一个factor列。我应该阅读更多关于它的内容。但是我使用了st。data.frame函数有一个名为stringsAsFactors的参数,该参数被设置为默认值。您可以在调用data时抑制该参数.frame设置为FALSE。我认为data.table不会以相同的方式强制字符向量。
data.table
对象确实继承自data.frames,因此您可以使用
$
,但在较大的作业中速度会慢得多。@IshouldBuyaBoot对于单列检索
$
将快几个数量级由于后一个函数op的开销较大,因此
[.data.table
位小于
[.data.frame()
位unneccessary@eddi关于
$
相对于
[
与data.table对象的相对速度的断言是非常令人惊讶的。通常在“data.table”旁边看不到“大开销”这个词@IShouldBuyABoat在
[.data.table
内部发生了大量的内部魔法,使其发挥神奇的作用,而且这种魔法代价高昂。这通常不是问题,因为您必须在一个大循环中运行
[.data.table
,但它有时会出现(最常见的是在使用
.SD
时)这是
数据的致命弱点。