我主要是R用户,但我想学习 Rcpp 以提高我的编码(速度)。所以我开始玩 C ++ 和 Rcpp ,我想我只是试着编写下面的简单函数,它接受矩阵行(即第一行)并从中扣除一个向量(m [1,] - vec)。
我知道这听起来很傻和简单,但我无法让它发挥作用。
代码< - '
在R中,这将完成,如[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):
0 2 2
答案 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)