使用data.table进行矩阵运算,规格不正确?

时间:2015-09-16 02:53:19

标签: r data.table

我想将dcast.data.tableas.matrix一起使用,就像我在dcast中使用它一样,但我未能取得可比较的结果。我会对此提出任何建议表示感谢。

library(reshape2)
library(data.table)
data(ChickWeight)

# this returns the correct dimension:
> as.matrix(dcast(ChickWeight, weight ~ Diet, value.var = "Time")[,-1])
Aggregation function missing: defaulting to length
        1 2 3 4
  [1,]  1 0 0 0
  [2,]  2 3 2 1
  [3,]  1 2 0 2
      .....

# this doesn't
    > as.matrix(dcast.data.table(setDT(ChickWeight), weight ~ Diet, value.var = "Time")[,-1])
Aggregate function missing, defaulting to 'length'
     [,1]
[1,]   -1

1 个答案:

答案 0 :(得分:0)

我们需要在with=FALSE

的子集中使用data.table
as.matrix(dcast.data.table(setDT(ChickWeight), weight ~ Diet, 
                      value.var = "Time")[,-1, with=FALSE])

?data.table

中对此进行了描述
  

with:默认情况下,'with = TRUE'和'j'在帧内进行评估             'x';列名可以用作变量。什么时候             'with = FALSE''j'是列名的字符向量或a             要选择的列位置的数字向量,以及值             返回始终是'data.table'。通常是'with = FALSE'             在'data.table'中有用,可以动态选择列。