为什么我不能将扩展R与Rcpp一起使用?

时间:2013-04-12 14:23:50

标签: r rcpp

#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环境中的函数是正确的

1 个答案:

答案 0 :(得分: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);
}