我正在尝试使用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
答案 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