从犰狳向量生成随机索引
Generate random index from Armadillo vector
我希望从给定的犰狳向量生成随机索引(使用 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)
事实证明这是一个棘手的问题已解决 。为后人解答如下
// [[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];
}
我希望从给定的犰狳向量生成随机索引(使用 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)
事实证明这是一个棘手的问题已解决
// [[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];
}