"Too many indices" R 中的大矩阵向量长度问题
"Too many indices" big matrix vector length issue in R
您好,提前致谢。我在 Windows 服务器上使用 Rx64 版本 3.1.2,并从 bigmemory
包生成了一个文件支持的大矩阵,我试图在线性规划问题中使用它。该矩阵为 7062 行乘以 364520 列,共有 2574240240 个条目(整数)。
当我运行线性程序的行时,出现以下错误:
Error in GetElements.bm(x, i, j) :
Too many indices (>2^31-1) for extraction.
我读到的那个数字 2147483647 是 R 允许任何对象甚至在 64 位进程上的最大条目数。我读过 here,我可以使用 R 的 'experimental version' 来解决这个问题,但我希望有一个最近可用的解决方案。我在下面有支持输出以确认我的 R 版本:
> version
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 1.2
year 2014
month 10
day 31
svn rev 66913
language R
version.string R version 3.1.2 (2014-10-31)
nickname Pumpkin Helmet
> Sys.getenv("R_ARCH")
[1] "/x64"
你能做的最好的基本上就是分而治之,这意味着分裂你的矩阵,并根据需要做尽可能多的步骤(更多)来达到你的目标。
最好也提供'line for the linear program'但是我的评论太长没法放在上面
@James 是正确的,目前 32 位被硬编码到 bigmemory
。在浏览 github 上的源代码后,我看到作者确实删除了约束,您可以通过以下方式下载最新版本:
library(devtools)
install_github("kaneplusplus/bigmemory")
没有那个限制我相信你仍然会有问题。如果我假设正确,您还使用了 complementary 包 bigalgebra
。有一种方法可以通过重新安装下载的 tar 球并使用以下命令安装 bigalgebra
来使用 64 位:
REFBLAS=1 R CMD INSTALL bigalgebra_0.8.4.tar.gz
注意 - 目前可用于 64 位的功能非常有限,并且由于当前的解决方法,将比非 64 位版本慢。
我已与原作者联系,我正在更新软件包以利用 RcppArmadillo
,这将提供更清晰的界面并处理 64 位问题。目前正在我的 github account.
上对软件包进行分叉
您好,提前致谢。我在 Windows 服务器上使用 Rx64 版本 3.1.2,并从 bigmemory
包生成了一个文件支持的大矩阵,我试图在线性规划问题中使用它。该矩阵为 7062 行乘以 364520 列,共有 2574240240 个条目(整数)。
当我运行线性程序的行时,出现以下错误:
Error in GetElements.bm(x, i, j) :
Too many indices (>2^31-1) for extraction.
我读到的那个数字 2147483647 是 R 允许任何对象甚至在 64 位进程上的最大条目数。我读过 here,我可以使用 R 的 'experimental version' 来解决这个问题,但我希望有一个最近可用的解决方案。我在下面有支持输出以确认我的 R 版本:
> version
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 1.2
year 2014
month 10
day 31
svn rev 66913
language R
version.string R version 3.1.2 (2014-10-31)
nickname Pumpkin Helmet
> Sys.getenv("R_ARCH")
[1] "/x64"
你能做的最好的基本上就是分而治之,这意味着分裂你的矩阵,并根据需要做尽可能多的步骤(更多)来达到你的目标。
最好也提供'line for the linear program'但是我的评论太长没法放在上面
@James 是正确的,目前 32 位被硬编码到 bigmemory
。在浏览 github 上的源代码后,我看到作者确实删除了约束,您可以通过以下方式下载最新版本:
library(devtools)
install_github("kaneplusplus/bigmemory")
没有那个限制我相信你仍然会有问题。如果我假设正确,您还使用了 complementary 包 bigalgebra
。有一种方法可以通过重新安装下载的 tar 球并使用以下命令安装 bigalgebra
来使用 64 位:
REFBLAS=1 R CMD INSTALL bigalgebra_0.8.4.tar.gz
注意 - 目前可用于 64 位的功能非常有限,并且由于当前的解决方法,将比非 64 位版本慢。
我已与原作者联系,我正在更新软件包以利用 RcppArmadillo
,这将提供更清晰的界面并处理 64 位问题。目前正在我的 github account.