Подмножество не там, откуда исходит ошибка. Фактически, эта ошибка оператора происходит из более поздней части кода, вызванного из-за первой ошибки.
Сказав это, выполнение вашего кода дает:
fileb9516da5f592.cpp:22:23: error: no viable overloaded '='
output = foo1(res = temp_res); //////// Line 22
~~~ ^ ~~~~~~~~
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/vector/Matrix.h:83:13: note: candidate function not viable: no known conversion from 'Rcpp::IntegerVector' (aka 'Vector<13>') to 'const Rcpp::Matrix<13, PreserveStorage>' for 1st argument
Matrix& operator=(const Matrix& other) {
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/vector/Matrix.h:90:13: note: candidate function not viable: no known conversion from 'Rcpp::IntegerVector' (aka 'Vector<13>') to 'const SubMatrix<13>' for 1st argument
Matrix& operator=( const SubMatrix<RTYPE>& ) ;
^
1 error generated.
make: *** [fileb9516da5f592.o] Error 1
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/private/var/folders/b0/vt_1hj2d6yd8myx9lwh81pww0000gn/T/RtmpRe7iKX/sourceCpp-x86_64-apple-darwin15.6.0-1.0.3" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -fPIC -Wall -g -O2 -c fileb9516da5f592.cpp -o fileb9516da5f592.o
Обратите внимание, первая ошибка:
fileb9516da5f592.cpp:22:23: error: no viable overloaded '='
output = foo1(res = temp_res); //////// Line 22
~~~ ^ ~~~~~~~~
Код выдает ошибку из-за именованного передача параметра. В отличие от R , C ++ не поддерживает именованные параметры. Решение заключается в использовании позиционных параметров.
То есть измените:
output = foo1(res = temp_res); //////// Line 22
на:
output = foo1(temp_res); //////// Line 22
Вуаля!
foo(matrix(1:4))
#[1] 2