[Rcpp-devel] moving lists between functions in a package
Scott Monroe
monroeleescott at gmail.com
Fri Dec 27 22:21:52 CET 2013
Thanks so much. Sorry for the silly error in the example. The following
works, and has the basic functionality I'm looking for.
#include <RcppArmadillo.h>
using namespace Rcpp ;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
List check_B(arma::mat B) {
int p = B.n_cols;
arma::mat BB = B*B;
arma::vec X = B.col(0);
return Rcpp::List::create(Rcpp::Named("X")=X, Rcpp::Named("BB")=BB,
Rcpp::Named("p")=p);
}
// [[Rcpp::export]]
List check_A(NumericMatrix A) {
arma::mat B = Rcpp::as<arma::mat>(A);
Rcpp::List L = check_B(B);
arma::mat CC = L["BB"];
return Rcpp::List::create(Rcpp::Named("B")=B, Rcpp::Named("CC")=CC);
}
On Fri, Dec 27, 2013 at 12:51 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> On 27 December 2013 at 12:36, Scott Monroe wrote:
> | I am trying to figure out how to create a package where I have one
> function
> | call another, which returns a list. Some example .cpp code is below.
> If I
> | just compile the first function, everything is fine. When I add the
> second
> | function, I get errors. I'm sure I'm using the Rcpp::List syntax
> incorrectly,
> | but I haven't had luck finding an example of how to do this.
> |
> | Again, I'd like to be able to call the first function from the second,
> grab the
> | results from the returned list, and do further computations.
> |
> | Thanks, Scott
> |
> |
> | #include <RcppArmadillo.h>
> | using namespace Rcpp ;
> | // [[Rcpp::depends(RcppArmadillo)]]
> |
> | // [[Rcpp::export]]
> | List check_C(NumericMatrix B) {
> | arma::mat A = Rcpp::as<arma::mat>(B);
> | int p = A.n_cols;
> | arma::mat AA = A*A;
> | arma::vec X = A.col(0);
> |
> | return Rcpp::List::create(Rcpp::Named("X")=X, Rcpp::Named("AA")=A,
> | Rcpp::Named("p")=p);
> | }
> |
> | // [[Rcpp::export]]
> | List check_C(NumericMatrix A) {
> | Rcpp::List L = check_C(A);
>
> A comes in as a matrix, now you are trying to make it a List -- that won't.
>
> Plus, as Simon, observed you may want to rename the functions a little.
>
> Dirk
>
> |
> | return Rcpp::List::create(Rcpp::Named("A")=A);
> | }
> |
> |
> |
> |
> | ----------------------------------------------------------------------
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> --
> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131227/c5d261e7/attachment-0001.html>
More information about the Rcpp-devel
mailing list