gpt4 book ai didi

c++ - 使用 Rcpp 在 R 中使用矩阵是否有限制?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:40 27 4
gpt4 key购买 nike

我试图在 R 中开发一个程序来估计 Spearman 与 Rcpp 的相关性。我做到了,但它只适用于范围小于 45 00 - 50 000 个 vector 的矩阵。我不知道为什么,但它只适用于那个维度。我想这种类型的信息是有限制的,也许我可以像 data.frame 一样处理它?如果有人给我见解,我将不胜感激。

我在这里发布我的代码。我一直试图限制我称之为“分母”的最大整数,它超过了它。也许你可以帮助我。

cppFunction('double spearman(NumericMatrix x){
int nrow = x.nrow(), ncol = x.ncol();
int nrow1 = nrow - 1;
double out = 0;
double cont = 0;
double cont1 = 0;
double r = 0;
int denominador = ncol*(pow(ncol,2.0)-1)

for(int i = 0; i < nrow1; i++){
#Here i use every combination of vectors starting with the first one, and so on
for(int j = i +1; j < nrow; j++){
cont1 = 0;
for(int t = 0; t < ncol; t++){
cont = pow(x(i,t)-x(j,t), 2.0);
cont1 += cont;
}
#Here i begin to store the mean correlation, in order to a final mean of all the possible correlations
r = 2*(1-6*(cont1/denominador))/(nrow*nrow1);
out += r;
}
}
return out;
}')

最佳答案

更简洁地重复:

  1. 一个 vector 中可以有超过 2^31-1 个元素。

  2. 矩阵是具有 dim 属性的 vector 。

  3. 矩阵中可以有超过 2^31-1 个元素(即 nk)

  4. 您的行和列索引仍限制为 2^31。

大 vector 的例子:

R> n <- .Machine$integer.max + 100
R> tmpVec <- 1:n
R> length(tmpVec)
[1] 2147483747
R> newVec <- sqrt(tmpVec)
R>

关于c++ - 使用 Rcpp 在 R 中使用矩阵是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38757326/

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