从data.table中只获取1个元素

时间:2017-04-14 18:05:15

标签: r data.table

我正在尝试使用data.table包,以便尝试在我的数据帧(1.8 gig)上保存内存,但是我在阅读1个元素时遇到了一些困难。当使用data.frame时,我会通过第一次调用来读取元素,并且我将得到第二次调用中显示的值,而不需要as.numeric()转换。由于data.table继承了data.frame,所以我期待同样的情况。我错过了什么吗?

DT = data.table(x=letters[1:3], y=1:9)
> DT[1,2]
   y
1: 1
> as.numeric(DT[1,2])
[1] 1

3 个答案:

答案 0 :(得分:4)

使用// seeing which color I got(r g or b) int color = 0; if (RW > BW && RW > GW){ color = 1; // no `int` here, just assigning delay(7000); } else if (GW > RW && GW > BW){ color = 2; delay(7000); } else if (BW > RW && BW > GW){ color = 3; delay(7000); } 的解决方案有效......只要数据实际上是数字的,或者可以被强制执行。

但是你可以使用as.numeric()干净地子类data.table的事实:

data.frame

这对于非数字或非整数数据应该等效。

答案 1 :(得分:1)

当您按列号引用列并希望您按名称引用时,Data.table不喜欢它。最简单的方法就是这样做:

DT = data.table(x=letters[1:3], y=1:9)
> DT[1,y]
[1] 1

答案 2 :(得分:1)

data.table faq似乎已更新。第一个答案就是这个:

  

1.1为什么DT [,5]和DT [2,5]返回1列data.table而不是像data.frame这样的向量?

对于原始问题,我认为使用此

更容易
> DT[1,2]
   y
1: 1
> DT[1,2][[1]]
[1] 1