gpt4 book ai didi

r - 将std::vector转换为Rcpp矩阵

转载 作者:行者123 更新时间:2023-12-04 01:27:59 25 4
gpt4 key购买 nike

这是与Rcpp转换有关的Q。我正在寻找将长std :: vector转换为Rcpp矩阵对象,但想知道是否存在简单的转换格式。自然地,您可以循环遍历每个元素并填充一个空的Rcpp矩阵,但这似乎容易出错,并且如果可以使用更方便的方法,则可能不必要。

我要问的原因是我想在一些现有的C ++代码中利用OpenMP,但是将元素直接存储在Rcpp矩阵对象中的OpenMP循环中似乎无法正常工作(而加载std :: vector对象并进行转换在完成OpenMP循环后将其转换为矩阵似乎是解决该问题的一种不错的方法)。

任何帮助将不胜感激!

最佳答案

您选择了一个好的方法。在OpenMP上下文中,您必须远离单线程R。因此std::vector很好。

是的,我们有从std::vectorRcpp::NumericVectorRcpp::NumericMatrix的构造函数(毕竟这只是一个带有Dimensions属性的向量),还有Rcoo:Integer*变体以及通常的as<>和< cc>转换器。

在Rcpp单元测试中,应该有很多示例,在Rcpp示例中,当然还有Rcpp Gallery站点上。

编辑:这是一个过于简单的示例:

 R> cppFunction('NumericVector phil(int n) { std::vector<double> x(n);
+ return wrap(x); }')
R> phil(4)
[1] 0 0 0 0
R>

关于r - 将std::vector转换为Rcpp矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864226/

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