<div dir="ltr">Thanks Dirk and Romain,<div><br></div><div>Let me follow up on this if you don't mind, there's probably a lot of ways to improve what I'm doing. Dirk, you mentioned blitz++. What I'm doing at the moment is a bit contrived and I'm wondering whether there may be a better way of going back and forth from R to blitz. my program looks like this:</div>

<div><br></div><div>#include <blitz/array.h></div><div><br></div><div><div>//' R interface to 3D Blitz++</div><div>//'</div><div>// [[Rcpp::export]]</div><div>NumericVector BlitzFun( NumericVector a_ , IntegerVector d){</div>

<div><br></div><div>    // map NumericVector to blitz++ array</div><div>    blitz::Array<double,3> a(a_.begin(), blitz::shape(d(0),d(1),d(2)) ,blitz::neverDeleteData );</div><div><br></div><div>    // do some blitz</div>

<div>    blitz::Array<double,3> b(a + 1.2);</div><div><br></div><div>    //return wrap(b); does not work - obviously. would a wrap() method be complicated?</div><div><br></div><div>    // instead copy back to a NumericVector</div>

<div>    NumericVector result(b.size());</div><div>    result = b;</div><div>    // and attach dimension attr</div><div>    result.attr("dim") = d;</div><div>    return result;</div><div>}</div></div><div><br></div>

<div>BlitzFun(1:8,c(2,2,2))<br></div><div><br></div><div><div>, , 1</div><div><br></div><div>     [,1] [,2]</div><div>[1,]  2.2  4.2</div><div>[2,]  3.2  5.2</div><div><br></div><div>, , 2</div><div><br></div><div>     [,1] [,2]</div>

<div>[1,]  6.2  8.2</div><div>[2,]  7.2  9.2</div></div><div>    </div><div><br></div><div>thanks</div><div>florian</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br>
</div>
<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 18 December 2013 12:51, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi Florian,<br>
<div class="im"><br>
On 18 December 2013 at 11:12, Florian Oswald wrote:<br>
| I have a C++ class that I build and test without the help of Rcpp. <br>
|<br>
| I use Rcpp as an interface, inputting and outputting data from and to the<br>
| class. I'm stuck at the outputter. Ideally I would like to have this at the end<br>
| of my program:<br>
|<br>
| Rcpp::List Results = MyClass.ExportToR();<br>
|<br>
| where ExportToR is a method that creates an Rcpp::List from members of MyClass.<br>
| However, I'm unable to use components of Rcpp.h in my code; In particular, I'm<br>
<br>
</div>If you want to use R in your own main, use  RInside  which makes this<br>
trivial. We ship it with several dozen examples.<br>
<br>
If you want to return a generic list structure, use the eg the STL type list<br>
(or, as you are using Blitz, maybe one of its containers).<br>
<div class="im"><br>
| unable to make this toy example work:<br>
|<br>
| #include <iostream><br>
| #include <cstdlib><br>
| #include <blitz/array.h><br>
| #include <Rcpp.h><br>
| #include <R.h><br>
|<br>
| using namespace std;<br>
|<br>
| int main(int argc, char *argv[])<br>
| {<br>
|   Rcpp::IntegerVector d;<br>
|<br>
|   // Rcpp::List L; want to use<br>
|   // L to output results to R.<br>
|<br>
|  return EXIT_SUCCESS;<br>
| }<br>
|<br>
| I compile it with<br>
|<br>
| llvm-g++-4.2 -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include<br>
| -DNDEBUG -W -I/usr/local/include -I/usr/local/include -I"/Library/Frameworks/<br>
| R.framework/Versions/3.0/Resources/library/Rcpp/include" -L"/Library/Frameworks<br>
| /R.framework/Versions/3.0/Resources/library/Rcpp/lib/" -L"/Library/Frameworks/<br>
| R.framework/Versions/3.0/Resources/lib" export.cpp -lRcpp -lR -o  export<br>
|<br>
| which compiles, but produces a segfault.<br>
<br>
</div>To be expected. R is its own main program, you cannot mix as you did. I<br>
suspect you may find RInside useful; it deploys all of Rcpp for parameter<br>
exchange.<br>
<br>
Cheers. Dirk<br>
<div class="im"><br>
<br>
| Thanks for any help!<br>
|<br>
| Florian<br>
|<br>
|<br>
|<br>
|<br>
|<br>
|<br>
|<br>
</div>| ----------------------------------------------------------------------<br>
<div class="HOEnZb"><div class="h5">| _______________________________________________<br>
| Rcpp-devel mailing list<br>
| <a href="mailto: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>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Dirk Eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a> | <a href="http://dirk.eddelbuettel.com" target="_blank">http://dirk.eddelbuettel.com</a><br>
</font></span></blockquote></div><br></div>