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