【发布时间】:2015-08-31 11:12:48
【问题描述】:
我正在尝试将 bool 向量作为参数传递给使用 Rcpparmadillo 的函数。一个愚蠢的例子是这样的:
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
// [[Rcpp::export]]
arma::mat myfun(arma::mat A, arma::vec mybool)
{
int n = A.n_rows;
arma::vec B(n);
for(unsigned int i = 0; i < n; ++i)
{
if(mybool.row(i) && i < 10) // mybool.row(i) && throws the error
{
B.row(i) = arma::accu(A.row(i));
}
else
{
B.row(i) = pow(arma::accu(A.row(i)), 0.5);
}
}
return B;
}
Here 建议使用 mat<unsigned char> 类型,但不适用于我。我也试过uvec 和std::vector<bool>,但也没有用。使用Rcpparmadillo 将逻辑向量作为参数传递的最佳方法是什么?
【问题讨论】:
-
尝试以更标准的方式格式化您的代码。
-
行成员函数从矩阵返回行向量。在这种情况下,您有一个向量,因此您希望 mybool(i) 返回一个带边界检查的元素或 mybool[i] 不带边界检查的元素。
标签: c++ r vector rcpp armadillo