R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換
當(dāng)我們在使用Rcpp時,進(jìn)行矩陣運(yùn)算最簡單的是使用Eigen
庫進(jìn)行相關(guān)操作,可以很輕松地講R中向量化與矩陣化的思想應(yīng)用到C++代碼上,從而對代碼進(jìn)行加速??蓞⒖记懊娴牟┛停?a target="_blank" href="http://chabaoo.cn/article/227483.htm">利用RcppEigen進(jìn)行矩陣運(yùn)算。
但有時,我們卻必須使用Rcpp
進(jìn)行DataFrame,List等對象格式的處理?;蛘呷绻覀兩婕暗饺笔е档奶幚恚残枰褂?code>Rcpp中的函數(shù)來做。
所以,如何在兩種矩陣或向量格式,NumericVector/Matrix與VectorXd/MatrixXd之間相互轉(zhuǎn)化就變得非常重要。
我們可以首先使用Eigen
庫中的VectorXd/MatrixXd對矩陣進(jìn)行運(yùn)算,然后再轉(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,如果之后需要進(jìn)行變換時,需要將兩者進(jìn)行替換即可。
以上就是R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Rcpp與Eigen庫之間的轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語言實現(xiàn)對數(shù)據(jù)框按某一列分組求組內(nèi)平均值
這篇文章主要介紹了R語言實現(xiàn)對數(shù)據(jù)框按某一列分組求組內(nèi)平均值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03R語言繪制小提琴圖violin plot實現(xiàn)示例
這篇文章主要為大家介紹了R語言繪制小提琴圖violin plot的實現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號
這篇文章主要介紹了詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03