我有一个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()的问题吗?
答案 0 :(得分:0)
查看RcppArmadillo头目录中的RcppArmadilloExtensions/
目录 - 为RcppArmadillo设置了一个完整的sample()
示例。
还有
以及使用它进行抽样的例子。
否则,您的问题可能会让标量 R::runif()
(使用R的C API)与矢量化 Rcpp::runif()
混淆向量。如果您更清楚自己使用哪一个(即使用::
显式命名空间),您的代码仍可以使用。