Ссылка на «внутреннее» при преобразовании в матрицу неоднозначна? - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь согласовать фрейм данных с матрицей в r cpp, как в этом ответе: лучший способ преобразовать DataFrame в матрицу в R Cpp

NumericMatrix testDFtoNM(DataFrame x) {
  NumericMatrix y = internal::convert_using_rfunction(x, "as.matrix");  
  return y;
}

и я получаю сообщение об ошибке:

Line 135 reference to 'internal' is ambiguous.

Кажется, это указывает на то, что существует более одного активного пространства имен с внутренним определением.

Как мне найти дополнительный внутренний и / или как могу ли я исправить код для компиляции без ошибки?

Обновление: Аллан дал мне решение, и использование R cpp :: inline позволяет ему работать, но не почему и как я могу найти правильное пространство имен самостоятельно.

Мои текущие пространства имен:

using namespace Rcpp;
using namespace std;
using namespace arma;
using namespace RcppParallel;

Очевидно, что internal существует более чем в одном из них. Есть ли способ без проб и ошибок определить, в каких ссылках он есть.

1 Ответ

4 голосов
/ 03 августа 2020

Функция, которую вы пытаетесь вызвать, находится в пространстве имен internal, которое вложено в пространство имен Rcpp, как вы можете видеть в документах . Предположительно вы используете как минимум два пространства имен с вложенным пространством имен internal. Поэтому простое указание

NumericMatrix testDFtoNM(DataFrame x) {
  NumericMatrix y = Rcpp::internal::convert_using_rfunction(x, "as.matrix");  
  return y;
}

должно устранить двусмысленность.

...