"无法分配矢量大小"尝试合并两个数据帧时出错

时间:2016-03-04 02:33:18

标签: r merge

我有两个数据框,每个数据框有120万行。

我尝试将它们与dummy <- merge(df1, df2)合并。两个数据帧都没有共同的列,但两个数据帧都没有。行按我想要的顺序排列。

我希望它们并排合并,但是当我运行合并功能时,我收到此错误:

    Error: cannot allocate vector of size 5905.6 Gb
In addition: Warning messages:
1: In rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :
  Reached total allocation of 8107Mb: see help(memory.size)
2: In rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :
  Reached total allocation of 8107Mb: see help(memory.size)
3: In rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :
  Reached total allocation of 8107Mb: see help(memory.size)
4: In rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :
  Reached total allocation of 8107Mb: see help(memory.size)

1 个答案:

答案 0 :(得分:1)

您可能需要尝试使用data.table::cbind作为合并row.names的替代参考替代方案。

library("data.table")
setDT(df1)
setDT(df2)
data.table::cbind(df1, df2)

但请在包reference中注意此警告:

  

由于此功能,这些功能在data.table中被屏蔽   cbind:

     

“如果至少有一个参数是数据,则将使用数据框方法   帧”。这意味着cbind(DT,DF)将调度到S3方法   cbind.data.frame,即使data.table提供了cbind.data.table。   因此,我们掩盖了这些功能。警告信息将是   加载data.table包时呈现给用户(通过R)。如果   第一个参数不是data.table,然后它们恢复到基数   版本