R error allocMatrix

时间:2009-11-30 12:06:30

标签: r bioconductor

全部,

我试图加载一定数量的Affymetrix CEL文件,使用标准BioConductor命令(64位linux上的R 2.8.1,72 GB RAM)

abatch<-ReadAffy()

但我一直收到这条消息:

Error in read.affybatch(filenames = l$filenames, phenoData = l$phenoData,  : 
  allocMatrix: too many elements specified

这个allocMatrix错误的一般含义是什么?有没有办法增加它的最大尺寸?

谢谢

3 个答案:

答案 0 :(得分:5)

问题是所有核心函数都使用INT而不是LONG来生成R对象。例如,您的错误消息来自/ src / main

中的array.c
if ((double)nr * (double)nc > INT_MAX)
    error(_("too many elements specified"));

其中nr和nc是之前生成的整数,代表矩阵的行数和列数:

nr = asInteger(snr);
nc = asInteger(snc);

因此,为了缩短它,源代码中的所有内容都应该更改为LONG,可能不仅在array.c中,而且在大多数核心函数中,这需要一些重写。很抱歉没有更多的帮助,但我想这是唯一的解决方案。或者,您可能会在明年等待R 3.x,并希望他们能够实施这个......

答案 1 :(得分:1)

如果你正在尝试使用庞大的affymetrix数据集,那么使用aroma.affymetrix中的包可能会更好。

此外,bioconductor是一个(特别)快速移动的项目,通常会要求您升级到最新版本的R以获得任何持续的“支持”(BioC邮件列表上的帮助)。我看到索龙也提到了与R 2.10有类似问题,但你仍然可能会考虑升级。

答案 2 :(得分:1)

我偶然碰到了这个帖子。不,香港。*框架不受int和longs的allocMatrix()限制的限制,因为它不仅仅使用常规地址空间来处理数据 - 而是通过文件系统进行子集化。它永远不会保留,也永远不会将完整的数据集加载到内存中。基本上,文件系统设置限制,而不是RAM或操作系统的地址空间。

/亨里克 (香气的作者。*)