在R中拆分大型数据集的替代方法

在R中拆分大型数据集的替代方法,r,split,bigdata,R,Split,Bigdata,我正在使用split()来分割超过15M行的数据集。common split()可以工作,但会占用大量时间。然后我做了一个函数,按行数拆分数据集,然后,使用snow并行地给出要拆分的结果列表(这是基本拆分,由一个变量拆分) 现在它的运行速度要快得多,但对于15万行来说,它会崩溃,因为这种型号会消耗大量内存(我使用3台机器,每台机器的内存为16GB) 您知道在不使用太多内存的情况下进行此拆分的其他方法吗?我尝试了ff软件包,但拆分函数的工作方式与data.frame不同。我尝试了ffbase软件包

我正在使用split()来分割超过15M行的数据集。common split()可以工作,但会占用大量时间。然后我做了一个函数,按行数拆分数据集,然后,使用snow并行地给出要拆分的结果列表(这是基本拆分,由一个变量拆分)

现在它的运行速度要快得多,但对于15万行来说,它会崩溃,因为这种型号会消耗大量内存(我使用3台机器,每台机器的内存为16GB)

您知道在不使用太多内存的情况下进行此拆分的其他方法吗?我尝试了ff软件包,但拆分函数的工作方式与data.frame不同。我尝试了ffbase软件包的拆分应用组合,但我只需要拆分部分,没有找到只使用拆分步骤的方法


谢谢

看起来您的拆分活动几乎肯定会创建数据的副本。这可能是太多的记忆。我可能会尝试从数据中一次处理一个小数据块,而不是一次创建所有的小数据块,然后再处理它们。我尝试使用3台机器,每台机器使用一个核心。你的意思是停止并行处理吗?然后它将再次花费大量时间。来自包ffbase的ffdfdply应该在FUN参数内返回data.frame。如果您的示例中不是这种情况,您可以尝试模拟ffdfdply的内部结构,它基本上设置了一个位置列表,每个拆分组一个位置,并将其保存在ff中。若你们的分割位置在RAM中是可能的,为什么你们不把这1列放在RAM中,并用它来选择你们从ff到RAM的数据。希望这有帮助。谢谢你帮助@jwijffels。我试过了,但速度很慢。你能详细解释一下你的建议吗?我还构建了一个ffdf列表(转换ffdf列表中的data.frame列表),并尝试将其应用到snow的paraply()中,但我得到了一个错误:节点产生了错误;第一个错误:尺寸数量不正确。ffdf的结构不同于data.frame。