【发布时间】:2019-03-21 08:36:24
【问题描述】:
我在处理大型文件夹的 R 脚本中遇到了内存问题。我必须对每个文件执行多项操作,然后将每个文件的一行输出到我的结果数据框中。
有时生成的数据框有数百行粘贴在一起在一行中,就好像它卡在同一行中一样(当负载很大时,似乎 rbind 无法正常工作) 我认为在内存中保留时间数据帧以附加结果时会出现问题,所以我采取了其他方法: 一个循环逐个读取每个文件,对其进行处理,然后打开与结果文件的连接,写入一行,关闭连接并继续读取下一个文件。想到避免内存中的大 df 并立即写入文件可以解决我的问题。
我认为这是非常低效的,所以我的问题是:是否有另一种方法可以有效地逐行附加输出,而不是绑定内存数据帧并在最后写入磁盘?
我精通多种选择:sink、cat、write line……我的疑问是使用哪一个来避免冲突并在给定条件下最有效
【问题讨论】:
-
也许分享一些你当前的代码?我认为你不应该每次都做 rbind 但首先将所有内容收集在一个列表中? “数百行”不应该是一个问题。除了为每个文件执行 sink/cat/write 之外,您还可以为每 1.000.000 个文件执行此操作以提高效率吗?整数/布尔向量比数字/双精度向量占用更少的空间。
-
严重需要一些最小的代码示例来查看您已经尝试过的内容。很高兴知道您对每个文件做了什么,以及每个文件有多大。如果你不能做一个最小可重复的例子,你至少需要给我们足够的东西来看看你哪里出错了。
-
至少一个或两个输入和预期输出的示例会有所帮助。
-
如果您遵循@AdamSampson 的建议并发布Minimal, Complete, and Verifiable Example 来解释您正在尝试做什么以及问题发生在哪里,您将获得更好的结果,而不是提供赏金。
标签: r output text-files