I'm new to Rcpp and RcppArmadillo---so far I like it a lot! Thanks to the
developers for their good work.
I run into a peculiar kind of problem when I try to pass a "large" Armadillo
object back to R. Here's some code to replicate the problem in stylized form:
extern "C" SEXP testFun(SEXP L_)
{
const long L = Rcpp::as<long>(L_);
arma::mat X(L,1);
arma::mat Y(L,1);
X.fill(1);
Y.fill(2);
return Rcpp::List::create(
Rcpp::Named("X") = Rcpp::wrap(X),
Rcpp::Named("Y") = Rcpp::wrap(Y)
);
}
I compile (both using g++ and the Intel Compiler --- choice of compiler makes
no difference) and then call from R:
L = 1000000
ret = .Call("testFun", as.integer(L))
print(ret$X[1:5,])
print(ret$Y[1:5,])
Here's what I often get as output:
[1] 1 1 1 1 1
[1] 1 1 1 1 1
However, the second rows should be all 2's!
When I try to pass smaller matrices, for example by setting L=100000, the
problem goes away:
[1] 1 1 1 1 1
[1] 2 2 2 2 2
Also, the problem does not arise when I create and pass pack objects of type
Rcpp::NumericMatrix; so far I've see the problem only with Armadillo objects.
I've encountered this on two Macs running OS X 10.6.6, R 2.12.2, and I'm using
the latest versions of Rcpp and RcppArmadillo.
Help on this matter is appreciated!
Günter
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel