Понятия не имею, что происходит.Я предполагаю, что Armadillo делает вещи по-другому.Но я не могу найти источники, которые могли бы помочь мне разобраться.
Конечный источник здесь - Документы Armadillo .Если вы перейдете к разделу об операторах , вы увидите, что оператор &
не входит в число перечисленных среди операторов "[o] verloaded для Mat, Col, Row и Cube классы. "Так что, если вы хотите такого оператора, вам придется самостоятельно его кодировать (или посмотреть, есть ли у кого-то еще его в интернете).Для Rcpp::NumericVector
s есть такой оператор:
#include <Rcpp.h>
// [[Rcpp::export]]
Rcpp::LogicalVector test1(const Rcpp::NumericVector& t1, double R1, double R2){
return (t1 >= R1) & (t1 < R2);
}
test1(1:10, 3, 7)
# [1] FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE
# [9] FALSE FALSE
Конечно, это мало поможет, если весь ваш код действительно полагается на Armadillo.
Обновление: Просто используйте &&
Как указано mtall в комментариях, оператор &&
на самом деле доступен , даже если он не обсуждался в броненосцеdocs (возможно, это не такой исходный код, как я думал)на основании вашего вопроса и ответа на комментарии:
test1(1:10, 3, 7)
[,1]
[1,] 0
[2,] 0
[3,] 1
[4,] 1
[5,] 1
[6,] 1
[7,] 0
[8,] 0
[9,] 0
[10,] 0