Rcpp の wrap 関数: C++のオブジェクトを R のデータ構造に変換する

vector を のリストに変換

// RcppVector.cpp
#include "Rcpp.h"

RcppExport SEXP foo () {
  std::vector<std::map<std::string,int> > v;
  std::map m1;
  std::map m2;
  m1["foo1"]=1;
  m1["bar1"]=2;
  m2["foo2"]=1;
  m2["bar2"]=2;
  m2["baz2"]=3;
  v.push_back( m1 );
  v.push_back( m2 );
  return Rcpp::wrap( v );
}
PKG_CXXFLAGS=$(shell Rscript -e "Rcpp:::CxxFlags()")
PKG_LIBS=$(shell Rscript -e "Rcpp:::LdFlags()")
CLINK_CPPFLAGS=$(shell Rscript -e "Rcpp:::Cxx0xFlags()")

というMakevarsを用意して

 CMD SHLIB RcppVector.cpp
>  dyn.load ("RcppVector.so")
> func <-  function () {
+                        .Call("foo")
+                     }
>  (x <- -  func() )
[[1]]
bar1 foo1
2    1

[[2]]
bar2 baz2 foo2
2    3    1

>  dyn.unload ("RcppVector.so")  #####
カテゴリー: R タグ: パーマリンク