1
#include "rcpp_add.h"
using namespace Rcpp ;

SEXP rcpp_add(SEXP a, SEXP b)
{

  std::vector< std::map<std::string,int> > v;
  std::map<std::string,int> m1;
  std::map<std::string,int> m2;

  int ax=Rcpp::as<int>(a);
  int bx=Rcpp::as<int>(b);

  m1["a"]=ax;
  m1["b"]=bx;

  m2["c"]=2;
  m2["d"]=20;

  v.push_back(m1);
  v.push_back(m2);

  return Rcpp::wrap(v);
}

这段代码可以交互式加载R,但在我使用时它会告诉我错误SEXP a, SEXP b。为什么?当我不使用该功能时,该功能在环境SEXP a, SEPX b中是正确的R

4

1 回答 1

3

您对错误消息的描述没有多大意义,但这是一个适合我的更简单的版本:

#include "Rcpp.h"
using namespace Rcpp;

// [[Rcpp::export]]
List rcpp_add(int a, int b) {

  std::vector< std::map<std::string,int> > v;
  std::map<std::string,int> m1;
  std::map<std::string,int> m2;

  m1["a"] = a;
  m1["b"] = b;

  m2["c"] = 2;
  m2["d"] = 20;

  v.push_back(m1);
  v.push_back(m2);

  return Rcpp::wrap(v);
}
于 2013-04-12T14:32:58.397 回答