1

我有一个大表 (x) 可以转换为矩阵 (y)。

我使用了两个不同的命令。

x <- reshape(y, direction="wide", v.names="column1", 
             timevar="column2", idvar="column3")

或者

x <- cast(x, column1~column2)

等待几个小时后,会出现一条错误消息。

 Error: cannot allocate vector of size 87 KB

另外:有 50 个或更多警告(使用 warning() 查看前 50 个)

当我打字时warnings(),我发现它在抱怨

Reached total allocation of 1535 Mb:
see help(memory.size)

在第二次试用中,我memory.size(TRUE)首先键入“,然后出现一条消息:

[1] 12.88

然后,我重新进行分析。但是,会出现相同的错误消息。

我正在使用装有 Windows 2000 的台式电脑。我正在使用 R2.12.0

你能介意让我知道是否有可能摆脱这个问题吗?

当我第一次输入“12.88”出现时,你能告诉我吗memory.size(TRUE),这是否意味着它所有的 12G 物理内存都是 R 在第二次试用中很容易使用的 RAM?

4

2 回答 2

1

在大多数 Windows 系统上,内存使用非常有限(在 R 中)。

您想查看 memory.limit 而不是 memory.size 的结果,然后还使用 memory.limit 来更改它。

在最好的情况下,您可以将其提高到 4 Gb,这对于您的目的可能仍然太少(取决于您的操作系统的详细信息 - 显然,您的机器有足够的 RAM,所以物理内存不是这里的问题(然而))。

有关更多信息,请参阅rw-FAQ

于 2011-04-19T07:38:40.913 回答
0

您确定您有 12GB 的 RAM 或者您正在运行 64 位版本的 Windows 2000?如果您阅读?memory.size,您会看到该值以字节而不是 GB 为单位。

主要消息指出您的物理内存不足。警告中提到的 1535MB 的数量表示具有 2GB 物理 RAM 的机器或只能访问该数量或将这样的数量分配给单个进程的操作系统。如果您真的有 12GB 物理 RAM,那么您需要在 64 位处理器上的 64 位版本 Windows 上运行 64 位版本的 R。所有这些都适用吗?例如,您可能在具有 2GB RAM 或使用 32 位版本的 R 的机器上运行。

问题归结为耗尽了 R 可以访问的可用 RAM。解决这个问题,或者把你的问题分成更小的块,看看你是否可以重塑每个更小的块,然后把它们粘在一起。

于 2011-04-19T07:40:02.967 回答