将dcast应用于大型data.table对象时出现R错误

时间:2017-12-14 23:10:28

标签: r data.table

我在R中有一个大的data.table对象,有4,847,143行。速度是关键,因此我主要使用库(data.table)实现操作。

dt的结构如下:

library(data.table)

dt

   nr  group count
1: 1   A     2
2: 1   B     2
3: 2   C     2
4: 2   D     2
5: 2   A     2
6: 3   B     2

当我尝试使用dcast将这个长dt转换为宽格式时,我收到以下错误:

ndt <- dcast(dt, nr ~ group, fun.aggregate = sum, value.var = 'count')

Error in dim.data.table(x) : 
  long vectors not supported yet: ../../src/include/Rinlinedfuns.h:138
In addition: Warning message:
In setattr(l, "row.names", .set_row_names(length(l[[1L]]))) :
  NAs introduced by coercion to integer range

当我将相同的函数应用于前2,000,000行的子集时,它可以正常工作:

ndt <- dcast(dt[1:2000000], nr ~ group, fun.aggregate = sum, value.var = 'count')

dim(dt)
[1] 4847143       3

dim(ndt)
[1] 1166035     716

在解决此问题或替代快速解决方案时,将非常感谢任何帮助。

我的data.table版本:

> packageVersion('data.table')
[1] ‘1.10.4.3’

由于

0 个答案:

没有答案