Следующий код Rcpp является минимальным воспроизводимым примером для гораздо большего кода, который генерирует одинаковую ошибку компиляции.Кажется, я не могу присвоить числовую матрицу списку, а затем список снова другой матрице.
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
List return_a(NumericMatrix a, NumericMatrix b){
//the function only returns the input matrix a
List result(1);
result(0) = a;
return(result);
}
//[[Rcpp::export]]
List wrapper_cpp(NumericMatrix a, NumericMatrix b){
//the function is a dummy wrapper for much more code
List Step1(1);
List results(1);
Step1 = return_a(a,b);
a = Step1(0);
results(0) = a;
return(results);
}
Приведенный выше код дает следующую ошибку компиляции, которую я сократил:
error: ambiguous overload for 'operator=' (operand types are 'Rcpp::NumericMatrix {aka Rcpp::Matrix<14>}' and 'Rcpp::Vector<19>::Proxy ...
a = Step1(0);
Моя реальная функция намного сложнее.Мне нужно манипулировать матрицами в нескольких циклах, и на каждом шаге матрицы возвращаются каждой функцией в списке.Затем мне нужно извлечь эти списки для дальнейшей работы с матрицами.Как это может быть сделано?