[Rcpp-devel] questions Rcpp

Mounia ZAOUCHE mounia.zaouche at agroparistech.fr
Fri Sep 14 15:25:40 CEST 2018


Thank you very much for your answers. 
Actually, it is really helpful. 
Best, 

Mounia 


De: "edd" <edd at debian.org> 
À: "Qiang Kou" <qkou at qkou.info> 
Cc: "mounia zaouche" <mounia.zaouche at agroparistech.fr>, "rcpp-devel" <rcpp-devel at lists.r-forge.r-project.org> 
Envoyé: Jeudi 13 Septembre 2018 22:55:58 
Objet: Re: [Rcpp-devel] questions Rcpp 

On 13 September 2018 at 08:51, Qiang Kou wrote: 
| Hi, Mounia, 
| 
| In Rcpp, using std::vector is preferred. 

Building on what Qiang said: If your array is a simple double[] then you can 
switch to std::vector<double> easily as aligning your array with the internal 
array. (Ditto for most other arrays of base types.) 

Or conversely, your can use Rcpp and transfer data from R down to C++ code 
using a std::vector<double> and then access the address of the initial 
element for your pointer. But the better approach is to use std::vector<> 
(Or our Rcpp::NumericVector). 

One reason is that Rcpp uses the .Call() interface to R, and it does _not_ 
support plain C pointers. Only the older (and not recommended anymore) .C() 
interface does. But then you have to give up all of Rcpp as well ... 

| It is still possible to use pointers, however, I am afraid you need to 
| write your "as" and "wrap" by yourself. You can find how to develop them in 
| our documents. 

And as<>() and wrap() are really intended for more complex data structures 
and not for pointers to atomistic C types. And yes, you would have work to do 
for new types. 

Hope this helps, Dirk 

| Best, 
| 
| Qiang Kou 
| 
| On Thu, Sep 13, 2018 at 4:15 AM Mounia ZAOUCHE < 
| mounia.zaouche at agroparistech.fr> wrote: 
| 
| > 
| > Dear all. 
| > 
| > I write C++ programs and I'm currently trying to interface them with R. 
| > 
| > I have two issues : 
| > 
| > Is it possible to interface a function which has an argument that is a 
| > pointer (standing for an array) ? 
| > 
| > I also wrote a function whose aim is to allocate (and fill) an array of 
| > values. In this purpose, this function takes as an argument the address of 
| > the array to be allocated and is thus typed as a pointer of pointer. 
| > Is it possible to handle such a type and to allocate the required memory 
| > inside this function interfaced in R? 
| > 
| > Thank you in advance. 
| > 
| > Mounia Zaouche. 
| > 
| > _______________________________________________ 
| > 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 
| _______________________________________________ 
| 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 

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20180914/dabc648b/attachment.html>


More information about the Rcpp-devel mailing list