gpt4 book ai didi

c++ - 在 R 中定义一个矩阵并将其传递给 C++

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

我在 R 中定义了一个矩阵。我需要将该矩阵传递给 C++ 函数并在 C++ 中执行操作。示例:在 R 中,定义一个矩阵,

A <- matrix(c(9,3,1,6),2,2,byrow=T)
PROTECT( A = AS_NUMERIC(A) );
double* p_A = NUMERIC_POINTER(A);

我需要将此矩阵传递给 C++ 函数,其中变量“数据”的类型为 vector<vector<double>>将用矩阵A初始化。

我似乎不知道该怎么做。我正在以比我应该的更复杂的方式思考,我敢打赌有一种简单的方法可以做到这一点。

最佳答案

正如保罗所说,我建议使用 Rcpp 对于那种事情。但这也取决于你想要什么 vector< vector<double> >意思是假设你想存储列,你可以像这样处理你的矩阵:

require(Rcpp)
require(inline)

fx <- cxxfunction( signature( x_ = "matrix" ), '
NumericMatrix x(x_) ;
int nr = x.nrow(), nc = x.ncol() ;
std::vector< std::vector<double> > vec( nc ) ;
for( int i=0; i<nc; i++){
NumericMatrix::Column col = x(_,i) ;
vec[i].assign( col.begin() , col.end() ) ;
}
// now do whatever with it
// for show here is how Rcpp::wrap can wrap vector<vector<> >
// back to R as a list of numeric vectors
return wrap( vec ) ;
', plugin = "Rcpp" )
fx( A )
# [[1]]
# [1] 9 1
#
# [[2]]
# [1] 3 6

关于c++ - 在 R 中定义一个矩阵并将其传递给 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324664/

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