[Rcpp-devel] Filling a big.matrix in Rcpp
OK, I've got it working.
You need to add the bigmemory inst directory to the PKG_CPPFLAGS, include
MatrixAccessor.hpp, and pass the pointer to the BigMatrix object to your
function. The following code should do the trick but note that it does not
create a new big.matrix object it simply modifies the big.matrix object
that is passed to your function.
require(Rcpp)
require(inline)
require(bigmemory)
Sys.setenv(PKG_CPPFLAGS=paste(
paste("-I", system.file(package="bigmemory"), "/include/bigmemory",
sep=""),
Sys.getenv("PKG_CPPFLAGS")))
matFn <- '
Rcpp::XPtr<BigMatrix> bigMat(A);
MatrixAccessor<int> Am(*bigMat);
int nrows = bigMat->nrow();
int ncolumns = bigMat->ncol();
for (int j = 0; j < ncolumns; j++){
for (int i = 1; i < nrows; i++){
Am[j][i] = Am[j][i] + Am[j][i-1];
}
}
';
# same function declaration as in example 2.
funx <- cxxfunction(signature(A="externalptr"), body=matFn, plugin =
"Rcpp", includes='#include "MatrixAccessor.hpp"')
# set up big.matrix
nrows <- 10000
bkFile <- "bigmat.bk"
descFile <- "bigmatk.desc"
suppressMessages(library(bigmemory))
bigmat <- filebacked.big.matrix(nrow=nrows, ncol=3,type="integer", init=1,
backingfile=bkFile, backingpath=".",descriptorfile=descFile,
dimnames=c(NULL,NULL))
matDesc <- bigmemory::describe(bigmat)
funx(bigmat at address)
On Thu, Mar 14, 2013 at 12:40 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
I do not think we have support for bigmemory's big.matrix objects. So you can't just assum it works. Contributions welcome. This is both 'an obvious one' as it would make sense at the C++ and R levels, and something that should not be so hard as we support XPtr. Dirk -- Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
_______________________________________________ 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
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130314/a2b2e90b/attachment.html>