gpt4 book ai didi

c - C数组到Rcpp NumericVector

转载 作者:行者123 更新时间:2023-12-02 08:17:40 26 4
gpt4 key购买 nike

我正在使用C数组,因此需要在代码中的某些时候将它们转换为Rcpp::NumericVector。我尝试了以下代码,但引发了错误(无法从double [5]转换为'SEXP'类型)。从C数组转换为NumericVector的正确方法是什么?

library(Rcpp)
cppFunction(
'
NumericVector fun() {
double data[5] = {1.0, 2.0. 1.0, 2.0, 1.0};
return as<NumericVector>(data);
}
')

最佳答案

我知道有两种方法可以做到:

1:范围构造函数

cppFunction('
NumericVector fun() {
double data[5] = {1.0,2.0,1.0,2.0,1.0};
return NumericVector(data,data+sizeof(data)/sizeof(*data));
}
');
fun();
## [1] 1 2 1 2 1

2:构建一个STL vector ,包装在SEXP中,最后包装在NumericVector
cppFunction('
NumericVector fun() {
double data[5] = {1.0,2.0,1.0,2.0,1.0};
return as<NumericVector>(wrap(std::vector<double>(data,data+sizeof(data)/sizeof(*data))));
}
');
fun();
## [1] 1 2 1 2 1

关于c - C数组到Rcpp NumericVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446846/

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