在 R 中处理大数据的有效方法

Posted

技术标签:

【中文标题】在 R 中处理大数据的有效方法【英文标题】:Efficient way to handle big data in R 【发布时间】:2017-10-08 15:03:27 【问题描述】:

我有一个巨大的 csv 文件,1.37 GB,当我在 R 中运行我的 glm 时,它崩溃了,因为我没有分配足够的内存。你知道,常规错误..

是否没有包 ff 和 bigmemory 的替代品,因为它们似乎不适合我,因为我的列是整数和字符的混合,而且似乎对于这两个包我必须指定我的列的类型是,字符或整数。

我们即将在 2018 年将人类送上火星;有没有简单的“read.csv.xxl”函数我们可以使用?

【问题讨论】:

您的计算机上没有 2GB 内存?也许是时候升级了。 我有 8 GB,但 glm 计算崩溃了。 bnosac.be/index.php/blog/… 中的任何指针是否有效? 我不知道,所以我没有尝试过。感谢您的提示! 【参考方案1】:

我首先要解决您的问题,即仅仅因为您的示例数据占用 1.37 GB,就完全意味着 1.37 GB 足以满足您使用 glm 包的所有计算。最有可能的是,您的一项计算可能会达到至少 1.37 GB 的倍数。

对于第二部分,一个实用的解决方法是从 1.37 GB 数据集中抽取一个合理的子样本。您真的需要使用所有原始数据集中的数据点来构建模型吗?或者,会说 10% 的子样本也给你一个统计上显着的模型?如果你降低数据集的大小,那么你就可以用 R 解决内存问题。

请记住,R 完全在内存中运行,这意味着一旦超出可用内存,您可能会倒霉。

【讨论】:

第一部分:完全正确。第二部分:我想使用我所有的数据,因为我想制作一个复杂的模型。而且我需要知道我对自己的估计有多大信心,所以我需要使用我所有的数据。因此我的问题。 @HeyJane 我不确定您是否需要使用所有数据。为了测试这一点,您可以从数据中抽取 10% 的子样本,并将该子集的描述性统计数据与原始数据集进行比较。 是的,我需要使用我的所有数据来评估我对我的估计的确定程度。而且,我想要一个非常复杂的模型。恕我直言,你没有解决我的问题。你只是说“减少数据” 鉴于您的内存限制,您可能无法在此大小的数据集上在 R 中运行 glm。不,根据我的经验,您并不总是需要使用如此大的数据集。模型的复杂性与这个论点关系不大。

以上是关于在 R 中处理大数据的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

R语言可以处理大的数据吗

如何有效的运用大数据

R语言可以处理大的数据吗

R读取大型数据集内存不足如何解决,如果利用Linux有啥有效方法吗?

使用 JSON 对象解析和处理大文件的更有效方法

如何在 R 中读取大 (~20 GB) xml 文件?