On 02/15/2010 06:42 AM, Leo Alekseyev wrote: > Hi all, > > I got a chance to play with Rcpp some more this weekend. I like it!
Cool > The one thing that I found a little awkward, however, is dealing with > matrices -- while the new API's SimpleVector indexes them just fine, I > wish it had provided accessors similar to the old API's > RcppMatrix<T>.rows()/cols(). That's a good idea. I'll probably make them lhs usable, so that one can do x.cols() = 5 ; And I think I prefer ncols and nrows (with the initial n), as this is closest to R functions ncols and nrows. I've put it up as a feature request on r-forge: https://r-forge.r-project.org/tracker/index.php?func=detail&aid=822&group_id=155&atid=640 > I can get the dimensions attribute via Rcpp::RObject's attr() method, > but that took some digging to figure out -- mostly because I can't > seem to get the cast operator to work properly. Here is how I get the > dimensions currently: > > Rcpp::RObject::AttributeProxy sa_dims_ap(sig_actions.attr("dim")); > vector<int> sa_dims2(Rcpp::as< vector<int> >(sa_dims_ap)); > Rprintf("sig_actions has dims %d,%d\n",sa_dims2[0],sa_dims2[1]); This needs better documentation, but what you can do is : vector<int> dims = sig_actions.attr("dim") ; This works for me ; require( inline ) require( Rcpp ) funx <- cfunction(signature(x="matrix"), ' IntegerVector mat(x); std::vector<int> dims = mat.attr("dim") ; std::cout << "nrows = " << dims[0] << " , ncols = " << dims[1] << std::endl ; return R_NilValue ; ', Rcpp = TRUE, includes = "using namespace Rcpp;" ) > funx( diag(4) ) nrows = 4 , ncols = 4 NULL > This seems to involve a cast to SEXP via AttributeProxy's operator > SEXP(). The following, however, doesn't compile: > vector<int> sa_dims3((vector<int>)sa_dims_ap); > Rprintf("sig_actions has dims %d,%d\n",sa_dims3[0],sa_dims3[1]); > > TradingLoopPCA.cpp:257: error: call of overloaded > ‘vector(Rcpp::RObject::AttributeProxy&)’ is ambiguous The proxy classes are designed to be invisible, you should not really access them directly. > Any pointers on what I'm doing wrong here? > > Thanks, > --Leo -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OcQe : Rcpp 0.7.7 |- http://tr.im/O1wO : highlight 0.1-5 `- http://tr.im/O1qJ : Rcpp 0.7.6 _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
