我不知道这个方法是否适用于所有人的需求(那些正在谷歌这个问题的人),但是通过这种方式,您可以保存单个或多个变量:
using namespace std;
using namespace Rcpp;
using Eigen::Map;
using Eigen::MatrixXi;
using Eigen::MatrixXd;
Environment base("package:base");
Function save = base["save"];
Function saveRDS = base["saveRDS"];
MatrixXd M = MatrixXd::Identity(3,3);
NumericMatrix xx(wrap(M));
NumericMatrix xx1(wrap(M));
NumericMatrix xx2(wrap(M));
base["xx"] = xx;
base["xx1"] = xx1;
base["xx2"] = xx2;
vector<string> lst;
lst.push_back("xx");
lst.push_back("xx1");
lst.push_back("xx2");
CharacterVector all = wrap(lst);
save(Named("list", all), Named("envir", base) , Named("file","Identities.RData"));
saveRDS(xx,Named("file","Identity.RDs"));
return wrap(M);
library(inline)
library(Rcpp)
library(RcppEigen)
src <- '
#put here cpp code shown above
'
saveworkspace <- cxxfunction(signature(), src, plugin = "RcppEigen")
saveworkspace()
list.files(pattern="*.RD*")
[1] "Identity.RDs"
[2] "Identities.RData"
我不确定这个C++代码是否能在独立的库/可执行文件中工作。
NB:最初我错过了解决方案应该独立于R
的评论,但对于那些正在寻找完全相同问题的人,但他们可以接受依赖于R
,这可能会有所帮助。
R
之外编写一个Rdata文件。例如,我希望我的代码可以在没有安装R
的情况下使用。 - Xu Wang