我希望从给定的犰狳矢量(使用R的Rcpp接口)生成随机索引。我正在使用的功能如下:
#include <RcppArmadillo.h>
#include <RcppArmadilloExtensions/sample.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::export]]
int index_rand(arma::vec& v) {
arma::uvec indices;
for (size_t i = 0; i < v.n_elem; ++i) {
indices[i] = i;
}
arma::uvec u = RcppArmadillo::sample(indices, 1, false);
return u[0];
}
但是,此代码符合但在运行时崩溃了R解释器:
index_rand(1:10)
答案 0 :(得分:0)
事实证明这是解决here的棘手问题。后人的答案如下。
// [[Rcpp::export]]
int index_rand(arma::vec& v) {
arma::uvec indices = arma::linspace<arma::uvec>(0, v.n_elem-1, v.n_elem);
arma::uvec u = RcppArmadillo::sample(indices, 1, false);
return (int)u[0];
}