行矩阵减去矢量与Rcpp

时间:2012-02-09 03:56:14

标签: c++ r rcpp

我主要是R用户,但我想学习 Rcpp 以提高我的编码(速度)。所以我开始玩 C ++ Rcpp ,我想我只是试着编写下面的简单函数,它接受矩阵行(即第一行)并从中扣除一个向量(m [1,] - vec)。

我知道这听起来很傻和简单,但我无法让它发挥作用。

  

代码< - '
arma :: mat beta =   Rcpp :: as(beta_);
arma :: vec y =   Rcpp :: as(y_);
arma :: rowvec S = beta.row(0);

  arma :: vec d = S - y;
返回Rcpp :: wrap(d);
'有趣< -   cxxfunction(签名(beta_ =“matrix”,y _ =“numeric”),代码,   plugin =“RcppArmadillo”)m< - 矩阵(1:9,3)
vec< -   c(1,2,5)
fun(m,vec)
  有趣的错误(m,vec):

     在R中,这将完成,如[m,1] - vec
0 2 2

1 个答案:

答案 0 :(得分:3)

library(RcppArmadillo)
library(inline)
code <- '
arma::mat beta = Rcpp::as<arma::mat>(beta_);
arma::rowvec y = Rcpp::as<arma::rowvec>(y_);
arma::rowvec S= beta.row(0);
arma::rowvec d = S - y;
return Rcpp::wrap(d);
'
fun <- cxxfunction(signature(beta_ ="matrix",y_="numeric"),code, plugin="RcppArmadillo")
m <- matrix(1:9,3)
vec <- c(1,2,5)
fun(m,vec)