Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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 加快分组数据的处理速度 更新:_R_Dplyr_Multiprocessing_R Future - Fatal编程技术网

R 加快分组数据的处理速度 更新:

R 加快分组数据的处理速度 更新:,r,dplyr,multiprocessing,r-future,R,Dplyr,Multiprocessing,R Future,我尝试了亚当的方法,成功了。使用8个核,处理只需20分钟。到目前为止这很好 但我遇到了另一个问题:foreach的%dopar%操作符将工作区分叉n次(等于注册的内核数)。这本身并没有问题,但对于20GB的数据集,这将很快变得难看 因此,对原始问题的一个限制是:在不将整个数据集在内存中分叉n次的情况下,是否可以做到这一点 情况: 我需要处理一个大的TIBLE(>3000万行)。正在对TIBLE进行分组,并为每个组调用一个函数 在第一步中,我通过仅提取列name中共享值的行来减少数据集,如下所示:

我尝试了亚当的方法,成功了。使用8个核,处理只需20分钟。到目前为止这很好

但我遇到了另一个问题:
foreach
%dopar%
操作符将工作区分叉
n次(等于注册的内核数)。这本身并没有问题,但对于20GB的数据集,这将很快变得难看

因此,对原始问题的一个限制是:在不将整个数据集在内存中分叉
n次的情况下,是否可以做到这一点

情况: 我需要处理一个大的TIBLE(>3000万行)。正在对TIBLE进行分组,并为每个组调用一个函数

在第一步中,我通过仅提取列
name
中共享值的行来减少数据集,如下所示:

重复%myFunction(,myOtherArgument=myOtherArgument)
%>%解组
使用
groupu\u by
对重复项进行分组通常会导致约>500k个组。每个组都由
myFunction()
处理。目前,这一过程大约需要90分钟,这是可以的,但远远不能令人满意

问题: 有没有办法加快这些小组的处理速度,使这项任务不需要90分钟,但所需时间明显减少


(包括但不限于多处理)

如果使用
data.table
包,可能会加快处理速度。您也可以尝试使用
dtplyr
,它被支持使用与
dplyr
相同的语法,但使用
数据。table
但将所有内容转换为
数据。table
也可以尝试使用
group_split()
tible
拆分为组上拆分的列表。然后通过
%dopar%
@Adam将列表传递到一个并行框架中,例如
foreach
,这很有帮助,但我遇到了另一个问题。我已经相应地更新了这个问题。无论如何谢谢你!也许试着把它分成几批?那么一个循环中的一个循环?这样,每次并行迭代只传递一个子集?您能确认大部分时间都花在运行
myFunction()
上吗?您是否使用
summary()