Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 仅从data.table中获取1个元素_R_Data.table - Fatal编程技术网

R 仅从data.table中获取1个元素

R 仅从data.table中获取1个元素,r,data.table,R,Data.table,我试图使用data.table包来节省数据帧(1.8gig)上的内存,但是我在读取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]) [

我试图使用data.table包来节省数据帧(1.8gig)上的内存,但是我在读取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

使用
as.numeric()
的解决方案有效。。。只要数据实际上是数字的,或者可以被强制

但是您可以使用
data.table
干净地子类
data.frame

R> DT <- data.table(x=letters[1:3], y=1:9)
R> DT[1,2]
   y
1: 1
R> unlist(DT[1,2]) ## DF is a list of vectors, so start with `unlist)_`
y 
1 
R> unname(unlist(DT[1,2]))  ## an `unname()`
[1] 1
R> 
R>DT[1,2]
Y
1: 1
R> unlist(DT[1,2])##DF是一个向量列表,所以从'unlist'开始)_`
Y
1.
R> unname(unlist(DT[1,2])##an`unname()`
[1] 1
R>

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

使用
as.numeric()
的解决方案有效。。。只要数据实际上是数字的,或者可以被强制

但是您可以使用
data.table
干净地子类
data.frame

R> DT <- data.table(x=letters[1:3], y=1:9)
R> DT[1,2]
   y
1: 1
R> unlist(DT[1,2]) ## DF is a list of vectors, so start with `unlist)_`
y 
1 
R> unname(unlist(DT[1,2]))  ## an `unname()`
[1] 1
R> 
R>DT[1,2]
Y
1: 1
R> unlist(DT[1,2])##DF是一个向量列表,所以从'unlist'开始)_`
Y
1.
R> unname(unlist(DT[1,2])##an`unname()`
[1] 1
R>

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

data.table不喜欢按列编号引用列,并希望按名称引用。最简单的方法是这样做:

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

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

DT = data.table(x=letters[1:3], y=1:9)
> DT[1,y]
[1] 1
似乎已经更新了。第一个答案是:

1.1为什么DT[,5]和DT[2,5]返回的是一列data.table,而不是data.frame之类的向量

对于最初的问题,我认为使用这个更容易

> DT[1,2]
   y
1: 1
> DT[1,2][[1]]
[1] 1
似乎已经更新了。第一个答案是:

1.1为什么DT[,5]和DT[2,5]返回的是一列data.table,而不是data.frame之类的向量

对于最初的问题,我认为使用这个更容易

> DT[1,2]
   y
1: 1
> DT[1,2][[1]]
[1] 1

我确实查看了这些内容,但我不知道如何阅读单个项目。不过,FAQ似乎有答案。我确实查看了这些内容,但我没有看到如何阅读单个项目。不过,FAQ似乎已经给出了答案。我对您的会话产生的输出感到困惑。您是否设置了一些选项来确保
with=T
?否。标准数据。表1.10.4。没有特殊设置。我似乎记得“按索引列”是最近添加的内容。“按大众需求”之类的。啊,我觉得我疯了(我在1.9.6上运行这个)。马特和他的同事比我更乐于改变自己的行为。我被你们的会议产生的结果弄糊涂了。您是否设置了一些选项来确保
with=T
?否。标准数据。表1.10.4。没有特殊设置。我似乎记得“按索引列”是最近添加的内容。“按大众需求”之类的。啊,我觉得我疯了(我在1.9.6上运行这个)。马特和他的同事比我更能适应改变行为。大概最简单的方法就是把它翻过来
DT[[2]][1]
,这在常见问题解答1.1中也有解释。是的,这同样有效。虽然在大多数情况下我更喜欢
[I,j]
语法,但只有在需要整个向量时才使用
$
,或者在使用变量时才使用
[[[]]
。可能最简单的方法是翻转
DT[[2]][1]
,FAQ 1.1中也解释了这一点。虽然在大多数情况下我更喜欢
[I,j]
语法,但只在需要整个向量时使用
$
,或者在使用变量时使用
[[[]]
。这不是真正正确的推断(它“喜欢什么”),因为
DT[1,“y”]
也按名称引用它……这不是真正正确的推断(它“喜欢什么”),由于
DT[1,“y”]
也指它的名字。。。