2016-04-28 1 views

ответ

1

Edit:

код, чтобы включить эту форму упаковки были объединены в версии Dev из RcppEigen. Вы можете получить копию с помощью:

devtools::install_github("RcppCore/RcppEigen") 

Оригинал:

Per RcppEigen-х unit tests и exporters, он looks, как будто только VectorXd/VectorXi в настоящее время имеет класс экспорта установить.

Это необходимо добавить к классу экспортера. Вот PR containing the fix.

template<typename T> 
class Exporter<Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic> > > { 
    typedef typename Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic> > OUT ; 
    const static int RTYPE = ::Rcpp::traits::r_sexptype_traits<T>::rtype ; 
    Rcpp::Vector<RTYPE> vec ; 

    public: 
     Exporter(SEXP x) : vec(x) { 
      if (TYPEOF(x) != RTYPE) 
       throw std::invalid_argument("Wrong R type for mapped vector"); 
     } 
     OUT get() {return OUT(vec.begin(), vec.size());} 
    } ; 

Поскольку RowVectorXd задается как вектор-строка знаков после запятой X: Matrix<double, 1, X>. См. Matrix docs