小编Mat*_*ert的帖子

数据表中的内存限制:不允许使用负长度向量

我有一个包含多个社交媒体用户和他/她的粉丝的数据表.原始数据表格式如下:

X.USERID FOLLOWERS
1081     4053807021,2476584389,4713715543, ...
Run Code Online (Sandbox Code Playgroud)

因此,每行包含一个用户以及他/她的ID和一个关注者矢量(用逗号分隔).总共有24,000个唯一身份用户ID和160,000,000个独立粉丝.我希望以下列格式转换原始表:

X.USERID          FOLLOWERS
1:     1081         4053807021
2:     1081         2476584389
3:     1081         4713715543
4:     1081          580410695
5:     1081         4827723557
6:     1081 704326016165142528
Run Code Online (Sandbox Code Playgroud)

为了获得这个数据表,我使用了以下代码行(假设我的原始数据表被称为dt):

uf <- dt[,list(FOLLOWERS = unlist(strsplit(x = FOLLOWERS, split= ','))), by = X.USERID]
Run Code Online (Sandbox Code Playgroud)

但是,当我在整个数据集上运行此代码时,我收到以下错误:

不允许负长度向量

根据这篇关于堆栈溢出的帖子(不正确使用set后data.table中的行数为负数),似乎我碰到了data.table中列的内存限制.作为一种解决方法,我以较小的块(每10,000个)运行代码,这似乎有效.

我的问题是:如果我改变我的代码,我可以防止这个错误发生或我是否碰到R的限制?

PS.我有一台140GB RAM的机器,所以物理内存空间应该不是问题.

> memory.limit()
[1] 147446
Run Code Online (Sandbox Code Playgroud)

r bigdata data.table

14
推荐指数
1
解决办法
5757
查看次数

标签 统计

bigdata ×1

data.table ×1

r ×1