R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換
當我們在使用Rcpp時,進行矩陣運算最簡單的是使用Eigen庫進行相關(guān)操作,可以很輕松地講R中向量化與矩陣化的思想應(yīng)用到C++代碼上,從而對代碼進行加速??蓞⒖记懊娴牟┛停?a target="_blank" href="http://www.dhdzp.com/article/227483.htm">利用RcppEigen進行矩陣運算。
但有時,我們卻必須使用Rcpp進行DataFrame,List等對象格式的處理?;蛘呷绻覀兩婕暗饺笔е档奶幚?,也需要使用Rcpp中的函數(shù)來做。
所以,如何在兩種矩陣或向量格式,NumericVector/Matrix與VectorXd/MatrixXd之間相互轉(zhuǎn)化就變得非常重要。
我們可以首先使用Eigen庫中的VectorXd/MatrixXd對矩陣進行運算,然后再轉(zhuǎn)化為Rcpp中的NumericVector/Matrix,繼而我們便可使用Rcpp中的函數(shù)了。
具體做法其實參考了下面的文章:
具體解決方法
以一個最簡單的NumericMatrix轉(zhuǎn)化為MatrixXd格式為例:
// [[Rcpp::depends(RcppEigen)]]
#include <Rcpp.h>
#include <RcppEigen.h>
using namespace Rcpp;
using Eigen::Map;
using Eigen::MatrixXd;
using Rcpp::as;
// [[Rcpp::export]]
MatrixXd Test(NumericMatrix AA) {
Map<Eigen::MatrixXd> A(as<Map<Eigen::MatrixXd> >(AA));
return(A);
}
我們將對象AA變?yōu)榱藢ο?code>A,如果之后需要進行變換時,需要將兩者進行替換即可。
以上就是R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換的詳細內(nèi)容,更多關(guān)于Rcpp與Eigen庫之間的轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語言因子型數(shù)值轉(zhuǎn)數(shù)值型的操作
這篇文章主要介紹了R語言因子型數(shù)值轉(zhuǎn)數(shù)值型的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04

