在RcppArmadillo的sample()函数

时间:2018-03-01 02:17:27

标签: rcpp

我有一个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()的问题吗?

1 个答案:

答案 0 :(得分:0)

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

还有

以及使用它进行抽样的例子。

否则,您的问题可能会让标量 R::runif()(使用R的C API)与矢量化 Rcpp::runif()混淆向量。如果您更清楚自己使用哪一个(即使用::显式命名空间),您的代码仍可以使用。