R:重塑/转换内存错误

时间:2011-04-19 06:50:25

标签: r memory casting reshape

我有一个大表(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

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

你能不能让我知道当我第一次输入memory.size(TRUE)时“12.88”出现了,这是否意味着R在第二次试验中所使用的所有12G物理内存都是RAM?

2 个答案:

答案 0 :(得分:1)

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

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

在最好的情况下,你可能会把它调高到4 Gb,这可能仍然太少你的目的(取决于你的操作系统的细节 - 显然,你的机器有足够的RAM,所以物理内存不是这个问题(还))。

有关详细信息,请参阅rw-FAQ

答案 1 :(得分: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。解决这个问题或将你的问题分解成更小的块,看看你是否可以重塑每个较小的块然后将它们粘在一起。