gpt4 book ai didi

r - ff 对象长度在 64 位 Windows 中被限制为 32 位整数

转载 作者:行者123 更新时间:2023-12-02 01:59:44 25 4
gpt4 key购买 nike

我在 64 位 Windows 中使用 64 位 R。但是当运行以下语句时

fi <- ff(vmode="integer", length=2147483648)

R 产生了一条错误消息说

长度必须介于 1 和 .Machine$integer.max 之间

这对 64 位 R 没有什么意义。有什么办法可以避免这个限制吗?

最佳答案

我通过更改/重新编译包的源代码解决了这个问题。

在 ff 的许多功能中,我只需要创建 ff 对象并调用 get/set 下标方法,所以我的范围足够窄,我可以在一个晚上完成这些,但所有功劳都归功于组织来源很好。事实上,作者为这个问题做了充分的准备,并为不同类型的索引和大小制作了 C 宏。我只是使用 C 宏来做我想做的事。

这就是我所做的大致情况。

  1. 删除 ff 函数中 ff 对象大小(长度)的所有错误检查整数
  2. 将大小和页面大小传递给 C 函数 new 时,使用 as.double 而不是 as.integer。
  3. 在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)
  4. 在 r_ff.c 的 r_ff_new 方法中,将所有 *_new 函数替换为 *_d_new 并使用 asReal 而不是 asInteger 来获取 len 和 pagesize

我确信还有更多事情要做,但在我的初始测试中,我可以执行上面问题中的语句,并可以在 R 中获取/设置数组的任何元素。我的目标是预处理和分析,例如, 30 GB 数据立方体,无需离开 R。我就这么接近了。

关于r - ff 对象长度在 64 位 Windows 中被限制为 32 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com