首页 > 解决方案 > 从 NumericVector 创建 NumericMatrix

问题描述

有没有办法从 NumericVectors 创建 NumericMatrix?像这样的东西:

Rcpp::cppFunction("NumericMatrix f(){
    NumericVector A(10, 2.0);
    NumericVector B(10, 1.0);
        return NumericMatrix(10,2,C(A,B)); //ERROR
}")

> f()

标签: rcpp

解决方案


当然。有例如cbind.

代码

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::NumericMatrix makeMatrix(Rcpp::NumericVector a, Rcpp::NumericVector b) {
  return Rcpp::cbind(a, b);
}

/*** R
a <- c(1,2,3)
b <- c(3,2,1)
makeMatrix(a,b)
*/

输出

> Rcpp::sourceCpp("~/git/stackoverflow/65538515/answer.cpp")

> a <- c(1,2,3)

> b <- c(3,2,1)

> makeMatrix(a,b)
     [,1] [,2]
[1,]    1    3
[2,]    2    2
[3,]    3    1
> 

推荐阅读