gpt4 book ai didi

c++ - 将 rcpp 变量转换为标准 C++ 变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:17 25 4
gpt4 key购买 nike

我的输入是这样的:

Rcpp::NumericMatrix data(dataMatrix);
Rcpp::NumericVector xSize(dataXsize);
Rcpp::NumericVector ySize(dataYsize);
Rcpp::NumericVector tIndexes(testIndexes);
Rcpp::NumericVector cIndexes(controlIndexes);

我尝试调用的外部库有这个签名

WilcoxonTest(float * _data, int _dataXsize, int _dataYsize, vector<int> * _testIndexes, vector<int> * _controlIndexes);

如何将 Rcpp 数据类型转换为 C++ 标准数据类型?

注意:

 float * _data

是一个浮点值矩阵。图书馆假设它是这样的:

 float * _data = new float[dataXsize * dataYsize];

最佳答案

获取std::vector<float>从你的NumericMatrix ,你可以使用:

std::vector<float> dat = Rcpp::as<std::vector<float> >(data);

此 vector 中的数字将按照它们在 R 中的矩阵中的存储方式进行存储(例如 matrix(1:4, nrow=2) 将生成一个 vector 1 2 3 4 )。如果您需要转置,我建议您调用 t来自 R 中。

您的问题剩下的就是转换 vector转换为 C 风格的原始指针。这可以通过以下方式完成:

float* _data = &dat[0];

关于从 std::vector 中获取原始 vector 的一些警告词对象:如果您稍后将对象添加到 dat或删除 dat , _data指针可能会变得无效。

您可以通过类似使用 Rcpp::as 来获取其他参数功能:

int _dataXsize = Rcpp::as<int>(xSize);
int _dataYsize = Rcpp::as<int>(ySize);
std::vector<int> _testIndexes = Rcpp::as<std::vector<int> >(tIndexes);
std::vector<int> _controlIndexes = Rcpp::as<std::vector<int> >(cIndexes);

关于c++ - 将 rcpp 变量转换为标准 C++ 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362844/

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