Hi Dirk,<div><br></div><div>N could be anywhere between 3-10. </div><div><br></div><div>Thanks! I will definitely look into how to do those.<br><br>Also, if </div><div><font><span style="line-height:normal;background-color:rgba(255,255,255,0)"><br>
</span></font></div><div><font><span style="line-height:normal;background-color:rgba(255,255,255,0)">Rcpp::NumericVector vec3 =Rcpp::NumericVector( Rcpp::Dimension(4, 5, 6));</span></font></div><div><font><span style="line-height:normal;background-color:rgba(255,255,255,0)"><br>
</span></font></div><div><font><span style="line-height:normal;background-color:rgba(255,255,255,0)">In this case, how do we access element vec3[1,2,3]?</span></font><br><br>Thanks again,</div><div>James<span></span><br><br>
On Friday, August 16, 2013, Dirk Eddelbuettel  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi James,<br>
<br>
On 16 August 2013 at 11:59, James Li wrote:<br>
| Dear Dirk and Rcpp-devel members,<br>
|<br>
| I am currently passing a multidimensional (N > 2) array (i.e.<br>
| array(NA, dim = rep(3,5)) ) from R via Rcpp using<br>
<br>
<br>
How big is 'N' going to be?<br>
<br>
| "in C++:"<br>
|<br>
| //[[Rcpp::export]]<br>
| Rcpp::List check_arrayC (Rcpp::NumericVector x, Rcpp::IntegerVector modes){<br>
| //do stuff to x<br>
|     return Rcpp::List::create(Rcpp::_["data"] = x, Rcpp::_["modes"] = modes);<br>
| }<br>
|<br>
|<br>
| "in R:"<br>
|<br>
| a <- array(1:32, dim=rep(2,5))<br>
| b <- check_arrayC(a, dim(a))<br>
|<br>
| While I know that a multidimensional array is stored as a contiguous<br>
| array internally, is there currently a more natural/efficient way to<br>
| pass it back and forth within Rcpp?<br>
|<br>
| Also from Dirk's book, it seems that an instance of<br>
| Rcpp::NumericVector can be instantiated into a multidimensional array<br>
| via<br>
|<br>
| Rcpp::NumericVector vec3 =Rcpp::NumericVector( Rcpp::Dimension(4, 5, 6));<br>
|<br>
| In this case, how do we access element vec3[1,2,3]?<br>
|<br>
| Some background about what I am trying to do: I would like to create a<br>
| multidimensional array wrapper class around the base R multi-way array<br>
| class. I would also like to be able to pass this multidimensional<br>
| array via Rcpp to do all the heavy-lifting in c++. Ideally, I could<br>
| also convert the mda into a Boost::multi_array.<br>
<br>
For a moderately-sized project (at work, not open source) I had a very good<br>
experience using Armadillo 'cubes' (3-d matrices) which I occassionally<br>
stored in 'fields' (which I though of as lists of such cubes).  I think in<br>
most (all?) cases I reduces data to 2-d matrices before returning that<br>
R. That worked great.<br>
<br>
Beyond that ... you are on your own as there is very little C++ support<br>
already useable by Rcpp.  You'd have to write custom as<>() and wrap()<br>
methods (which is not hard and may well be worth it).<br>
<br>
Cheers, Dirk<br>
<br>
| Thanks in advance for any help.<br>
|<br>
| -James<br>
|<br>
| --<br>
| James Li | Ph.D. Candidate | <a href="http://jamesyili.com/" target="_blank">http://jamesyili.com/</a><br>
| Dept. of Statistical Science | Cornell University<br>
| _______________________________________________<br>
| Rcpp-devel mailing list<br>
| <a href="javascript:;" onclick="_e(event, 'cvml', 'Rcpp-devel@lists.r-forge.r-project.org')">Rcpp-devel@lists.r-forge.r-project.org</a><br>
| <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel</a><br>
<br>
--<br>
Dirk Eddelbuettel | <a href="javascript:;" onclick="_e(event, 'cvml', 'edd@debian.org')">edd@debian.org</a> | <a href="http://dirk.eddelbuettel.com" target="_blank">http://dirk.eddelbuettel.com</a><br>
</blockquote></div><br><br>-- <br>James Li <b><font color="#3366ff">|</font></b> Ph.D. Candidate <b><font color="#3366ff">|</font></b> <a href="http://jamesyili.com/" target="_blank">http://jamesyili.com/</a><br>Dept. of Statistical Science <b><font color="#3366ff">|</font></b> Cornell University<br>