Rcpp函数错误与STRSXP不兼容:[type=NULL]

Rcpp函数错误与STRSXP不兼容:[type=NULL],r,rcpp,R,Rcpp,我对Rcpp非常陌生,尝试实现一个简单的东西,但我遇到了一个错误,不知道出了什么问题。 我想要一个从列表构造data.frame的函数。 我的cpp文件如下所示: #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] DataFrame makeDF(List x) { NumericVector a = x["a"]; NumericVector b = x["b"]; NumericVector n

我对
Rcpp
非常陌生,尝试实现一个简单的东西,但我遇到了一个错误,不知道出了什么问题。 我想要一个从
列表
构造
data.frame
的函数。 我的cpp文件如下所示:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
DataFrame makeDF(List x) {
  NumericVector a = x["a"];
  NumericVector b = x["b"];
  NumericVector n = x["n"];
  const int n2 = n[0];

  NumericVector a2 = NumericVector(n2, a[0]);
  NumericVector b2 = NumericVector(n2, b[0]);

  DataFrame df = DataFrame::create(a2, b2);

  return df;
}
#包括
使用名称空间Rcpp;
//[[Rcpp::导出]]
数据帧makeDF(列表x){
数值向量a=x[“a”];
数值向量b=x[“b”];
数值向量n=x[“n”];
常数int n2=n[0];
数值向量a2=数值向量(n2,a[0]);
数值向量b2=数值向量(n2,b[0]);
DataFrame df=DataFrame::create(a2,b2);
返回df;
}
然后我在R中写道:

library(Rcpp)
sourceCpp("./cppcode/check_makeDF.cpp")
# no errors here, it compiles OK
x <- list(a = 2.5, b = 1.1, n = 5)
makeDF(x)
# Error in makeDF(x) :Not compatible with STRSXP: [type=NULL].
库(Rcpp)
sourceCpp(“./cppcode/check_makeDF.cpp”)
#这里没有错误,它可以编译

x如果您为列命名,它会起作用:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
DataFrame makeDF(List x) {
  NumericVector a = x["a"];
  NumericVector b = x["b"];
  NumericVector n = x["n"];
  const int n2 = n[0];

  NumericVector a2 = NumericVector(n2, a[0]);
  NumericVector b2 = NumericVector(n2, b[0]);

  DataFrame df = DataFrame::create(Named("a") = a2, 
                                   Named("b") = b2);

  return df;
}
/*** R
x <- list(a = 2.5, b = 1.1, n = 5)
makeDF(x)
*/
#包括
使用名称空间Rcpp;
//[[Rcpp::导出]]
数据帧makeDF(列表x){
数值向量a=x[“a”];
数值向量b=x[“b”];
数值向量n=x[“n”];
常数int n2=n[0];
数值向量a2=数值向量(n2,a[0]);
数值向量b2=数值向量(n2,b[0]);
DataFrame df=DataFrame::create(命名为(“a”)=a2,
命名(“b”)=b2);
返回df;
}
/***R
x