我会尝试解释我的问题。在两个目录dir1和dir2中有365个(全局映射)文件,它们具有相同的格式,字节,扩展等。我使用下面给出的函数和代码计算了两个数据集之间的bias
,如下所示:
我该如何解决这个问题呢?
答案 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.mspx和http://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。