0
映射工作正常:rcppEigen不支持RowVectorXd?
Map<Eigen::VectorXd> x(as<Map<Eigen::VectorXd> >(y));
但與:
Map<Eigen::RowVectorXd> x(as<Map<Eigen::RowVectorXd> >(y));
是RowVectorXd不RcppEigen支持?
映射工作正常:rcppEigen不支持RowVectorXd?
Map<Eigen::VectorXd> x(as<Map<Eigen::VectorXd> >(y));
但與:
Map<Eigen::RowVectorXd> x(as<Map<Eigen::RowVectorXd> >(y));
是RowVectorXd不RcppEigen支持?
編輯:
的代碼,以使這種形式的包裝已合併爲RcppEigen
dev的版本。隨時通過抓住一個副本:
devtools::install_github("RcppCore/RcppEigen")
原文:
每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