R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換
當(dāng)我們在使用Rcpp時(shí),進(jìn)行矩陣運(yùn)算最簡單的是使用Eigen
庫進(jìn)行相關(guān)操作,可以很輕松地講R中向量化與矩陣化的思想應(yīng)用到C++代碼上,從而對代碼進(jìn)行加速。可參考前面的博客:利用RcppEigen進(jìn)行矩陣運(yùn)算。
但有時(shí),我們卻必須使用Rcpp
進(jìn)行DataFrame,List等對象格式的處理。或者如果我們涉及到缺失值的處理,也需要使用Rcpp
中的函數(shù)來做。
所以,如何在兩種矩陣或向量格式,NumericVector/Matrix與VectorXd/MatrixXd之間相互轉(zhuǎn)化就變得非常重要。
我們可以首先使用Eigen
庫中的VectorXd/MatrixXd對矩陣進(jìn)行運(yùn)算,然后再轉(zhuǎn)化為Rcpp
中的NumericVector/Matrix,繼而我們便可使用Rcpp
中的函數(shù)了。
具體做法其實(shí)參考了下面的文章:
具體解決方法
以一個(gè)最簡單的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)行變換時(shí),需要將兩者進(jìn)行替換即可。
以上就是R語言技巧Rcpp與Eigen庫之間的相互轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Rcpp與Eigen庫之間的轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語言實(shí)現(xiàn)對數(shù)據(jù)框按某一列分組求組內(nèi)平均值
這篇文章主要介紹了R語言實(shí)現(xiàn)對數(shù)據(jù)框按某一列分組求組內(nèi)平均值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03R語言中因子相關(guān)知識(shí)點(diǎn)詳解
在本篇內(nèi)容里小編給大家總結(jié)了關(guān)于R語言中因子的相關(guān)知識(shí)點(diǎn)以及相關(guān)實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04R語言繪制小提琴圖violin plot實(shí)現(xiàn)示例
這篇文章主要為大家介紹了R語言繪制小提琴圖violin plot的實(shí)現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02R語言實(shí)現(xiàn)地理加權(quán)回歸(GWR)
這篇文章主要為大家介紹了R語言實(shí)現(xiàn)地理加權(quán)回歸(GWR)操作流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號(hào)
這篇文章主要介紹了詳解R語言中的表達(dá)式、數(shù)學(xué)公式、特殊符號(hào),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03