如何修改加入函数的代码?

时间:2013-07-10 18:39:57

标签: r

我会尝试解释我的问题。在两个目录dir1和dir2中有365个(全局映射)文件,它们具有相同的格式,字节,扩展等。我使用下面给出的函数和代码计算了两个数据集之间的bias,如下所示:

我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:2)

我怀疑这是由于32位系统的内存限制。您想要分配一个933M双精度数组,这需要7.6Gb的连续内存。建议您阅读?Memory?"Memory-limits"了解详情。特别是,后者说:

  

错误消息开头'无法分配大小的向量'表示        无法获得内存,因为大小超过了        进程的地址空间限制,或者更可能是因为        系统无法提供内存。请注意,在32位上        建立那里可能有足够的可用内存,但不是        足够大的连续地址空间块可映射到其中        它

如果这确实是您的问题,您可以查看bigmemory包(http://cran.r-project.org/web/packages/bigmemory/index.html),它允许管理具有共享和基于文件的内存的大量矩阵。还有其他策略(例如使用SQLite数据库)来管理一次不适合内存的数据。

<强>更新即可。以下是Memory-limit对Windows的摘录:

  

32位Windows下的地址空间限制为2Gb,除非操作系统的默认值已更改为允许更多(最高3Gb)。请参阅http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspxhttp://msdn.microsoft.com/en-us/library/bb613473(VS.85).aspx。在大多数64位版本的Windows下,32位版本的R的限制是4Gb:对于最老的版本,它是2Gb。 64位版本的R(由OS强加)的限制是8Tb。

     

由于Windows在地址空间中间的预分配,即使在64位Windows上,通常也不可能为32位版本的R中的单个向量分配2Gb。

     

在Windows下,R对单个会话可用的总内存分配施加限制,因为操作系统无法执行此操作:请参阅memory.size和memory.limit。