Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
为什么在ffbase2(dplyr_ffbase)节目中进行总结;无法将as.vmode.default()(list)对象中的错误强制为类型';双倍'&引用;?_R_Dplyr_Ff_Ffbase - Fatal编程技术网

为什么在ffbase2(dplyr_ffbase)节目中进行总结;无法将as.vmode.default()(list)对象中的错误强制为类型';双倍'&引用;?

为什么在ffbase2(dplyr_ffbase)节目中进行总结;无法将as.vmode.default()(list)对象中的错误强制为类型';双倍'&引用;?,r,dplyr,ff,ffbase,R,Dplyr,Ff,Ffbase,我有一个大的(23000000行)ffdf表(tbl_ffdf),有10列,其中7列是因子,3列包含数字。它看起来像这样: TABLE_bad F1 F2 F3 F4 F5 F6 F7 N1 N2 N3 1111 01.15 05.14 busns AA 16 F 55.2 16165 0 1111 01.15 05.14 busns AA 1

我有一个大的(23000000行)ffdf表(tbl_ffdf),有10列,其中7列是因子,3列包含数字。它看起来像这样:

TABLE_bad

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   55.2  16165      0
 1111  01.15  05.14  busns     AA     16      F   12.5      0   4545
 2222  12.14  11.14  privt     KM      5      T    0.7    255 987777
 2222  12.14  11.14  privt     KM      5      T  111.6   7800      0
TABLE_ok

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   57.7  16165   4545
 2222  12.14  11.14  privt     KM      5      T  112.3   8055 987777
42   for (i in grouped_chunks(.data)){
43     ch <- grouped_df(data_s[i,,drop=FALSE], groups(.data))
44     res <- summarise_(ch, .dots = dots)
45     out <- append_to(out, res, check_structure=FALSE)
46   }
我希望使用sum(Nx)聚合数据,以删除此类重复项,并使我的表如下所示:

TABLE_bad

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   55.2  16165      0
 1111  01.15  05.14  busns     AA     16      F   12.5      0   4545
 2222  12.14  11.14  privt     KM      5      T    0.7    255 987777
 2222  12.14  11.14  privt     KM      5      T  111.6   7800      0
TABLE_ok

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   57.7  16165   4545
 2222  12.14  11.14  privt     KM      5      T  112.3   8055 987777
42   for (i in grouped_chunks(.data)){
43     ch <- grouped_df(data_s[i,,drop=FALSE], groups(.data))
44     res <- summarise_(ch, .dots = dots)
45     out <- append_to(out, res, check_structure=FALSE)
46   }
我使用的是从github安装的包ffbase2(它是ffdf表的dplyr)。我正在做以下工作:

TABLE_gr <- group_by(TABLE_bad, F1, F2, F3, F4, F5, F6, F7)    # this step finishes OK
                                                               # in approximately 90 sec

TABLE_ok <- summarise(TABLE_gr, sN1 = sum(N1), sN2 = sum(N2), sN3 = sum(N3))
之后,它会根据我的Rstudio中的设置进入调试模式,需要3-5分钟才能进入足够的深度,停止挂起计算机并显示出错的功能代码:

function (x, ...) 
UseMethod("as.vmode")
在数据中,我们可以看到x是F1值的Data.frame。在回溯函数中

eval(expr, envir, enclose)
`[<-`(`*tmp*`, ff::hi(N + 1, N + n), , value = -*etc*-
append_to(out, res, -*etc*-
summarise_.grouped_ffdf( -*etc*-
eval(expr、envir、envir)

`[今天我发现了错误的原因。
摘要.grouped\u ffdf
的源代码部分如下所示:

TABLE_bad

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   55.2  16165      0
 1111  01.15  05.14  busns     AA     16      F   12.5      0   4545
 2222  12.14  11.14  privt     KM      5      T    0.7    255 987777
 2222  12.14  11.14  privt     KM      5      T  111.6   7800      0
TABLE_ok

   F1     F2     F3     F4     F5     F6     F7     N1     N2     N3
 1111  01.15  05.14  busns     AA     16      F   57.7  16165   4545
 2222  12.14  11.14  privt     KM      5      T  112.3   8055 987777
42   for (i in grouped_chunks(.data)){
43     ch <- grouped_df(data_s[i,,drop=FALSE], groups(.data))
44     res <- summarise_(ch, .dots = dots)
45     out <- append_to(out, res, check_structure=FALSE)
46   }

这很好,但在那之后,我在使用此摘要时遇到了内存不足的问题。调查发现,这是因为
分组的_块(.data)
。我没有弄明白为什么会这样以及在这里要做什么,我只是在for循环中逐月对我的数据进行切片,然后将聚合块彼此附加。

读取数据时是否使用了
colClasses
?使用
lappy(TABLE\u bad,class)
找到它。@Soheil我在导入数据时没有使用colClasses,但后来我手动制作了每一列必需的类型。例如,F1..F7中的一些是日期或带有NAs的数字,我用正确排列的级别和级别“NA”制作了它们的因子(ok_ussd,class)$virtual[1]“ff_vector”“ff”$physical[1] “ff_vector”“ff”
对不起,我编辑自己的评论迟到了。更多信息可能是
>lappy(colnames(TABLE_bad),function(x){class(TABLE_bad[,x])}
[code>[1][1][1][1][3][1][1][4][1][5][1][1][1][1][1][8][1]“整数”[[10]][1]“逻辑”实际上,F7是最后一列-它是逻辑的。