在RcppArmadillo的sample()函数中使用Rcpp的runif()函数

问题描述 投票:0回答:1

我有一个Rcpp脚本,我在其中执行以下操作:

double m = runif(1); // generate a random number uniformly between 0 and 1.

然后我将m传递给sample(),如下所示:

IntegerVector ind = RcppArmadillo::sample<IntegerVector>(perms, ceil(num_specs * m), false); // int perms, num_specs.

以上行导致错误:

error: no viable conversion from 'NumericVector' (aka 'Vector<14>') to 'double' 

除非我的思考(或声明)有缺陷,否则runif(1)是标量(double)而不是向量(NumericVector)。

当我声明时,上述工作正常:

double m = 0;

有人可以指出如何解决runif()的问题?

rcpp
1个回答
0
投票

看看RcppArmadillo头目录中的RcppArmadilloExtensions/目录 - 有一个完整的sample()示例设置为RcppArmadillo。

还有

以及使用它进行采样的示例。

否则你的问题可能是混淆标量R::runif()(使用R的C API)和矢量化的Rcpp::runif()返回一个向量。如果你更清楚你使用哪一个(即使用::显式命名空间),你的代码仍然可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.