[Rcpp-devel] Returning a matrix from RcppEigen
Michael Hannon
jmhannon.ucdavis at gmail.com
Sat Jun 28 00:09:22 CEST 2014
This may be too-simpleminded for subscribers to this list, but I've
posted my two examples to:
https://github.com/DavisDaddy/RcppLinAlg
-- Mike
On Fri, Jun 27, 2014 at 11:38 AM, Kevin Ushey <kevinushey at gmail.com> wrote:
> Hi Michael,
>
> Thanks for reporting -- things like this signal that we could do better
> error reporting, e.g. it might be more appropriate to see
>
> Error in eval(expr, envir, enclos) (from srcConn#6) :
> Wrong R type for mapped vector (expected 'double', got 'integer')
>
> or something to that effect. You might consider logging an issue at
> https://github.com/RcppCore/RcppEigen so that we might tackle it later.
>
> Cheers,
> Kevin
>
>
> On Fri, Jun 27, 2014 at 11:31 AM, Michael Hannon
> <jmhannon.ucdavis at gmail.com> wrote:
>>
>> Thanks, Dirk. Last night I woke up with a cramp in my leg and the
>> inspiration that the problem was in the R test code, not in the call
>> to Eigen. I was absent-mindedly creating integer matrices in my test
>> code. After I changed to:
>>
>> amat <- matrix(as.numeric(1:9), nrow=3)
>>
>> etc., the Eigen stuff worked just fine. Sorry for the noise.
>>
>> -- Mike
>>
>> On Fri, Jun 27, 2014 at 2:38 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
>> >
>> > On 26 June 2014 at 16:01, Michael Hannon wrote:
>> > | Greetings. I've been trying to get familiar with RcppArmadillo and
>> > RcppEigen.
>> > | As my "Hello, world!" example I'm using matrix multiplication. I got
>> > the
>> > | Armadillo version to work, but I'm having trouble with the Eigen
>> > version.
>> > |
>> > | I'm trying to mimic one of Dirk's gallery snippets:
>> > |
>> > | http://gallery.rcpp.org/articles/eigen-eigenvalues/
>> > |
>> > | I've appended the details. My problem is that I evidently don't know
>> > what to
>> > | return from the function. I've tried various alternatives, but the
>> > only one
>> > | that compiles is:
>> > |
>> > | return C; // C = A * B
>> > |
>> > | This compiles but produces the error message:
>> > |
>> > | > mat_mul_eigen(amat, bmat)
>> > | Error in eval(expr, envir, enclos) (from srcConn#6) :
>> > | Wrong R type for mapped vector
>> > |
>> > | I must be overlooking something obvious. Suggestions welcome.
>> > Thanks.
>> >
>> > I am out at a conference and can't look in detail but I would invite you
>> > to
>> > check the other examples in the package itself: The unit tests are one
>> > source, the examples and FastLm are another and then there are the other
>> > packages using RcppEigen as well as other Rcpp Gallery posts. This
>> > should be
>> > fixable pretty easily.
>> >
>> > Dirk
>> >
>> >
>> > | -- Mike
>> > |
>> > | (File is: mat_mul_eigen.cpp. Executed in R via:
>> > | sourceCpp("./mat_mul_eigen.cpp")
>> > | )
>> > |
>> > |
>> > | #include <RcppEigen.h>
>> > |
>> > | // [[Rcpp::depends(RcppEigen)]]
>> > |
>> > | using Eigen::Map; // 'maps' rather than copies
>> > | using Eigen::MatrixXd; // variable size matrix,
>> > | double precision
>> > | using Eigen::VectorXd; // variable size vector,
>> > | double precision
>> > |
>> > | // [[Rcpp::export]]
>> > |
>> > | MatrixXd mat_mul_eigen(Map<MatrixXd> A_,
>> > | Map<MatrixXd> B_) {
>> > |
>> > | MatrixXd C(A_ * B_);
>> > |
>> > | return C;
>> > | }
>> > |
>> > |
>> > | /*** R
>> > |
>> > | library(microbenchmark)
>> > | amat <- matrix(1:9, nrow=3)
>> > | bmat <- matrix(10:18, nrow=3)
>> > |
>> > | mat_mul_eigen(amat, bmat)
>> > |
>> > | amat %*% bmat
>> > |
>> > | microbenchmark(
>> > | amat %*% bmat,
>> > | mat_mul_eigen(amat, bmat)
>> > | )
>> > |
>> > | */
>> > | _______________________________________________
>> > | 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
>> >
>> > --
>> > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>> _______________________________________________
>> 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
>
>
More information about the Rcpp-devel
mailing list