【问题标题】:Split big data in R在 R 中拆分大数据
【发布时间】:2015-07-03 00:40:28
【问题描述】:

我有一个大数据文件 (~1GB),我想将它拆分成更小的文件。我手头有 R 并打算使用它。

无法将整个加载到内存中,因为我会收到“无法为 xxx 的向量分配内存”错误消息。

然后我想使用带有参数 skip 和 nrows 的 read.table() 函数来读取文件的部分内容。然后保存到单个文件中。

为此,我想先知道大文件中的行数,这样我才能确定应该为单个文件设置多少行以及应该拆分成多少个文件。

我的问题是:如何在不完全加载到 R 的情况下从大数据文件中获取行数?

假设我只能使用 R。所以不能使用任何其他编程语言。

谢谢。

【问题讨论】:

  • 也不从 R 调用命令行实用程序?
  • 在 R 中做的任何事情都很好。只是不使用 Java 或 Python 或其他编程语言。
  • 你的平台是什么? windows使用find,linux使用wc -l
  • 我的平台是windows。

标签: r bigdata


【解决方案1】:

计算行数应该很容易——查看本教程http://www.exegetic.biz/blog/2013/11/iterators-in-r/(“迭代行”部分)。 要点是使用 ireadLines 在文件上打开一个迭代器

【讨论】:

  • 这是个好建议。但是请编写一段示例代码,它会找出文件中的行数,而不需要链接到外部教程。
【解决方案2】:

对于 Windows,this 之类的东西应该可以工作

fname <- "blah.R"  # example file
res <- system(paste("find /v /c \"\"", fname), intern=T)[[2]]
regmatches(res, gregexpr("[0-9]+$", res))[[1]]
# [1] "39"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2023-01-22
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多