Матрица строк минус вектор с Rcpp - PullRequest
1 голос
/ 09 февраля 2012

Я в основном пользователь 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);<br> arma :: vec d = S - y;return Rcpp :: wrap (d);'fun <- cxxfunction (signature (beta_ = "matrix", y _ = "numeric"), code, plugin = "RcppArmadillo")m <- матрица (1: 9,3)vec <- c (1,2,5)весело (м, VEC)<strong> Ошибка в веселье (м, век):

в R это будет сделано как,м [1,] - VEC0 2 2

1 Ответ

3 голосов
/ 09 февраля 2012
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...