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