【问题标题】:Mysterious problems appending data frames with rbind用 rbind 附加数据帧的神秘问题
【发布时间】:2012-12-29 21:36:07
【问题描述】:

我正在尝试将多个文件合并到一个主文件中。有 5 个结构相同的文件,我可以毫无问题地将每个文件单独读入数据框中。我什至为 200 多个变量手动设置列类,而不是让 R 决定,因为我认为这是导致问题的原因。但是,将任意两个文件附加在一起会导致内存不足。

警告信息: 1:在 rbind(deparse.level, ...) 中: 已达到 4043Mb 的总分配:请参阅 help(memory.size)

所以我做了一些实验: 我将两个不同的文件 1 块连接在一起。这样可行。 我将文件 2 的一部分加入到文件 1 的一部分中。这行得通。 我将文件 2 的一大块加入到原始文件 1 中。这行得通。

每个文件的大小都略低于 200MB,所以我不确定我是否应该耗尽内存。如果有人感兴趣,数据来自hearstchallenge.com。比赛已经结束了,我们只是将数据用于分析实验(而不是编程!)。

对于如何解决这个问题有什么建议吗?

【问题讨论】:

  • +1 表示“泡菜的小菜”。您遇到的问题是 R 需要 4043 MB 的连续内存才能完成操作。我想你没有那么多闲钱。您可以尝试使用像sed 这样的命令行工具来加入R 之外的文件,或者像ff 这样的大数据包之一。
  • write.table 也有一个append 选项。
  • > system("cat file1 file2 file3 file4 file5 >>big.ass.file")
  • data.table 包中查看rbindlist,我认为...
  • 糟糕——使用shell 将比使用system 容易得多

标签: r memory-management append rbind


【解决方案1】:

我也遇到过类似的问题。解决方案是不要在大数据上使用 rbind() 或 cbind()。他们倾向于泄漏内存。

要仅使用 R 来解决您的问题,请首先创建一个数据框,该数据框具有在您将各个部分放在一起后数据框将具有的维度。然后使用 assignments 填充大数据框。

【讨论】:

  • 对于大数据,不要使用data.frames,使用data.tables。
猜你喜欢
  • 2012-10-13
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多