题
全部,
我试图加载一定数量的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错误的一般含义是什么?有没有办法增加它的最大尺寸?
谢谢
解决方案
问题是所有核心函数都使用INT而不是LONG来生成R对象。例如,您的错误消息来自/ src / main
中的array.cif ((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,并希望他们能够实施这个......
其他提示
如果您正在尝试使用大型affymetrix数据集,那么使用 aroma.affymetrix 。
此外,bioconductor是一个(特别)快速移动的项目,通常会要求您升级到最新版本的R,以便继续<!>支持<!> (有关BioC邮件列表的帮助)。我看到索龙也提到了与R 2.10有类似问题,但你仍然可能会考虑升级。
我偶然碰到了这个帖子。不,香港。*框架不受int和long的allocMatrix()限制的限制,因为它不仅仅使用常规地址空间来处理数据 - 而是通过文件系统进行子集化。它永远不会保留,也永远不会将完整的数据集加载到内存中。基本上,文件系统设置限制,而不是RAM或操作系统的地址空间。
/亨里克 (香气的作者。*)
不隶属于 StackOverflow