gpt4 book ai didi

r - 如何在 R 中处理大矩阵或 data.frame

转载 作者:行者123 更新时间:2023-12-02 08:43:27 26 4
gpt4 key购买 nike

我正在尝试将值分配给“10000000*6”逻辑矩阵。该过程是1)创建一个矩阵; 2)然后将值分配给矩阵的每个元素。为了简化我的问题,我仅展示如何将一个值分配给矩阵的一个元素。

代码如下:

m <- matrix(data = NA, ncol= 6, nrow= 10000000)
m[1,1] <- 1

错误:无法分配大小为 228.9 Mb 的向量

创建“10000000*6”逻辑矩阵时没有错误,但赋值时出现错误。

我也尝试使用较小的矩阵(100*6)执行相同的任务。事情进展顺利。

代码如下:

m <- matrix(data = NA, ncol= 6, nrow= 100)
m[1,1] <- 1

有人可以帮我处理更大的矩阵吗?

最佳答案

这可能有点令人惊讶,但 R 有点拖延。有可能“创建”对象的命令实际上可能不会这样做,直到存在真正的操作需求,例如用“真实”值填充矩阵。描述这一点的术语是“pass-by-promise”。此外,对现有对象的分配可能会构造该对象的重复甚至三重副本,这些副本将占用空间,直到它们被垃圾收集为止。

所以这就是你要做的。退出 R。断电。使用最少的其他应用程序重新启动系统,因为它们都会占用内存。重新启动 R 并运行命令。如果您在系统加载之前拥有典型的 4GB 可用内存,我预计会成功。 228.9 Mb 实际上并不是很大,但在你的情况下,它是压垮 Camel 的最后一根稻草。 R 需要能够为每个对象找到连续的内存,并且垃圾收集通常不会对内存进行碎片整理。

关于r - 如何在 R 中处理大矩阵或 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com