gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:31:11 25 4
gpt4 key购买 nike

我对Rcpp非常陌生,并尝试实现一个简单的事情,但我收到错误并且不知道出了什么问题。我想要一个从 list 构造 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;
}

然后在 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].

最佳答案

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

#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函数错误与STRSXP不兼容: [type=NULL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49976279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com