【发布时间】:2019-09-28 05:20:53
【问题描述】:
我正在尝试从通过元素“&”连接的另外两个逻辑向量中获取逻辑向量:
//[[Rcpp::export]]
arma::uvec test1(arma::vec t1, double R1, double R2){
arma::uvec t = (t1 >= R1) & (t1 < R2);
return t;
}
当我尝试编译时它返回以下错误
error: no match for 'operator&' (operand types are 'arma::enable_if2<true, const arma::mtOp<unsigned int, arma::Col<double>, arma::op_rel_gteq_post> >::result {aka const arma::mtOp<unsigned int, arma::Col<double>, arma::op_rel_gteq_post>}' and 'arma::enable_if2<true, const arma::mtOp<unsigned int, arma::Col<double>, arma::op_rel_lt_post> >::result {aka const arma::mtOp<unsigned int, arma::Col<double>, arma::op_rel_lt_post>}')
arma::uvec t = (t1 >= R1) & (t1 < R2);
^
我不知道发生了什么。我猜犰狳做事不同。但是我找不到任何资源来帮助我解决问题。任何帮助,将不胜感激!非常感谢!
【问题讨论】:
-
您的意思是
&&而不是&吗?运算符&&和&具有完全不同的含义,即使它们看起来相关。&&表示“逻辑与”。&表示“按位与”。尝试将您的代码更改为:arma::uvec t = (t1 >= R1) && (t1 < R2); -
&& 确实有效,但它没有给我正确的答案。我需要元素&。 && 似乎只是通过快捷方式选项。
-
@davidolohowski 当你的比较是双打时 elementwise 是什么意思?
-
@duckmayr 对不起,我不够清楚。我希望结果是真或假的向量。但是 && 只给了我一个正确或错误的答案,这不是我想要的。但奇怪的是 && 没有编译问题,而 & 确实。
-
@davidolohowski 查看我的答案的更新——我认为它应该按照你的意愿工作
标签: rcpp rcpparmadillo