【发布时间】:2018-05-20 13:39:45
【问题描述】:
我在这里阅读了很多关于内存管理的问题。所以我清理了我的 GB 大小的数据并将其缩小到 32MB(770K 行)并将其存储在 BigQuery 上。但是当我尝试把它变成矩阵时,as.data.frame(str_split_fixed(event_list$event_list, ",", max(length(strsplit(event_list$event_list, ","))))),我得到了这个错误
错误:无法分配大小为 4472.6 Gb 的向量
无论如何要解决这个问题,我在这里做错了什么?是我将其存储在 BigQuery 上还是将其转换为矩阵会增加大小?
【问题讨论】:
-
难道不是您的 str_split 正在生成大量数据。检查
as.data.frame(event_list)是否先工作 -
event_list$event_list的长度是多少?因为您正在尝试创建一个包含那么多列的 data.frame。 -
@Emmanuel-Lin 这部分是可行的
-
@NathanWerth 70 万行 10 列
-
也许我在这里遗漏了一些东西,但看起来你有很多冗余。不知道为什么要调用
max(length(etc.,因为长度返回一个整数。我想你可能会选择lengths(带有“s”)。此外,strsplit和str_split_fixed非常相似。理论上你可以从strsplit得到str_split_fixed的结果。如果你必须计算不止一次,特别是如果它是一个昂贵的操作,你应该只计算一次并将它存储在一个变量中。继续...
标签: r memory-management