我在 64 位 Windows 中使用 64 位 R。但是在运行以下语句时
fi <- ff(vmode="integer", length=2147483648)
R产生了一条错误消息说
length must be between 1 and .Machine$integer.max
这对 64 位 R 没有什么意义。有什么办法可以避免这种限制吗?
我在 64 位 Windows 中使用 64 位 R。但是在运行以下语句时
fi <- ff(vmode="integer", length=2147483648)
R产生了一条错误消息说
length must be between 1 and .Machine$integer.max
这对 64 位 R 没有什么意义。有什么办法可以避免这种限制吗?
我通过更改/重新编译包的源解决了这个问题。
在 ff 的众多功能中,我只需要创建 ff 对象并调用 get/set 下标方法,因此我的范围足够窄,我可以在一夜之间完成这项工作,但所有功劳归于原作者,他很好地组织了源代码. 事实上,作者为这个问题做好了准备,并为不同类型的索引和大小制作了 C 宏。我只是使用 C 宏来做我想做的事。
这大致是我所做的。
new
。在 ff.h 中,我重新定义了以下宏及其在 ff.cpp 中的对应部分
#define FF_DECL_TYPE(NAME,TYPE) \
FF_DECL_TYPE2(NAME,TYPE,int,int) \
FF_DECL_TYPE2(NAME##_d,TYPE,double,double)
在 r_ff.c 的 r_ff_new 方法中,将所有 *_new 函数替换为 *_d_new 并使用 asReal 而不是 asInteger 来表示 len 和 pagesize
我确信还有更多的事情要做,但是在我的初始测试中,我可以执行上面我的问题中的语句,并且可以在 R 中获取/设置数组的任何元素。我的目标是预处理和分析,例如 30 GB不离开 R 的数据立方体。我就这么接近了。