R合并"无法分配区域"

时间:2015-10-18 19:40:00

标签: r

我有两个数据框:

name type       length size    value
x    data.frame 2      152.6MB 20,000,263 obs of 2 variables
y    data.frame 26     2.2GB   20,000,263 obs of 26 variables

做的时候

x <- merge(x,y, by="common variable")

我收到以下错误:

rsession(25305,0x7fff7c8e9300) malloc: *** mach_vm_map(size=1600042080280576) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
rsession(25305,0x7fff7c8e9300) malloc: *** mach_vm_map(size=1600042080280576) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Error: cannot allocate vector of size 1490155.3 Gb

我无法想到为什么R试图分配1,490,155.3Gb的空间......

任何人都可能对此有所了解吗?

1 个答案:

答案 0 :(得分:1)

我猜测这样做的方法是在ab中存储匹配变量的所有组合,然后选择匹配变量的组合。它确实需要大量内存。这一行(来自merge.data.frame)看起来就像这样:

ij <- expand.grid(seq_len(nx), seq_len(ny))

其中nxny是数据框的行数。所以这里尝试创建大小为20,000,000到20,000,000 x 2的元素,这可能会达到所需的Gb RAM数量。