<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.mibkeyword
        {mso-style-name:mibkeyword;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-IE">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">I’m evaluating RInside/Rcpp to interact our C++ project with R.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">I’ve seen the samples to get/set data (matrix, dataframes, etc) to/from R and it builds/works fine.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">(Using gcc/mingw compiler from RTools on Windows)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">My questions is about functions…<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">My project is C++, and it uses RInside to call R from our code.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">Let’s say I have a C++ function implemented in my project, and I want to pass that c++ function to R so it can be “used” as a R function (typically passed as argument to optim/optimize)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">I couldn’t find a way to do that using RInside.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">Ideally, I’d like to achieve something like:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal">#include <RInside.h><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">double Banana(double x, double y)<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:35.4pt">return (1-x)*(1-x)+100*(y-x*x)*(y-x*x);
<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Int main()<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:35.4pt">RInside R(argc,, argv);<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:35.4pt"><span lang="EN-IE">R[“fn”] = Banana;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:35.4pt"><span lang="EN-IE">R.parseEval(“optim(c(-2,-2), fn”);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">I believe it’s similar to </span><a href="https://stackoverflow.com/questions/53729493/rinside-wrapping-a-c-function-for-use-in-an-r-function"><span lang="EN-IE">https://stackoverflow.com/questions/53729493/rinside-wrapping-a-c-function-for-use-in-an-r-function</span></a><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-IE">But I can’t really understand the Rcpp::XPtr suggestion from Dirk.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">Any help or pointers welcome </span><span lang="EN-IE" style="font-family:Wingdings">J</span><span lang="EN-IE"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE">Thx a mil<o:p></o:p></span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<table class="MsoNormalTable" border="0" cellspacing="1" cellpadding="0" width="0" style="width:450.0pt">
<tbody>
<tr>
<td width="201" style="width:150.0pt;padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal" align="center" style="text-align:center"><a name="9ec4225d62ac420cbb072f26f245c3e6_empty"></a><a href="https://addactis.letsignit.com/r/32/6de77c22-c065-4906-899e-eec38189d60a/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="180" height="37" style="width:1.875in;height:.3854in" id="Image_x0020_4" src="cid:image005.jpg@01D59593.3FF9BC00" alt="cid:image005.jpg@01D59593.3FF9BC00"></span></a><br>
<br>
<a href="https://addactis.letsignit.com/r/199/c042c4a7-2508-4bf6-801a-4eeb09778ade/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="Image_x0020_3" src="cid:image006.png@01D59593.3FF9BC00" alt="cid:image006.png@01D59593.3FF9BC00"></span></a>  <a href="https://addactis.letsignit.com/r/42/b8791eba-0dab-4aa1-ab9d-813a5f8be48d/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="Image_x0020_2" src="cid:image007.png@01D59593.3FF9BC00" alt="cid:image007.png@01D59593.3FF9BC00"></span></a>  <a href="https://addactis.letsignit.com/r/45/15ea361f-f441-4b13-94a0-4bdb30820d9a/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="Image_x0020_1" src="cid:image008.png@01D59593.3FF9BC00" alt="cid:image008.png@01D59593.3FF9BC00"></span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</td>
<td width="3" style="width:1.5pt;background:#CCCCCC;padding:.75pt .75pt .75pt .75pt">
</td>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><span lang="EN-IE"><br>
</span><strong><span lang="EN-IE" style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:#3D93CB">   William </span></strong><span class="mibkeyword"><b><span lang="EN-IE" style="font-size:10.5pt;color:#3D93CB">LEVRA-JUILLET</span></b></span><span lang="EN-IE" style="font-size:10.5pt"><br>
<span style="color:#BBBBBB">   Senior Software Architect </span><br>
<strong><span style="font-family:"Calibri",sans-serif;color:#555555">   ADDACTIS Software</span></strong><br>
<span style="color:#BBBBBB">   +33 (0)4 81 92 13 00 <br>
   </span></span><span lang="EN-IE"><br>
<br>
</span><span lang="EN-IE" style="font-size:10.5pt;color:#54BBBA">   </span><span style="font-size:10.5pt;color:#54BBBA"><a href="https://addactis.letsignit.com/r/32/91871b88-8586-4561-b012-50a3a792527a/undefined" target="_blank"><span lang="EN-IE" style="color:#54BBBA">www.addactis.com</span></a></span><span lang="EN-IE" style="font-size:10.5pt;color:#54BBBA"> </span><span lang="EN-IE"><br>
 </span><span lang="EN-IE" style="font-size:12.0pt"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
<div>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<table class="MsoNormalTable" border="0" cellspacing="1" cellpadding="0" width="0" style="width:450.0pt">
<tbody>
<tr>
<td width="201" style="width:150.0pt;padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal" align="center" style="text-align:center"><a href="https://addactis.letsignit.com/r/32/cf8ac9eb-d46f-4524-bc9e-5cdb532bef11/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="180" height="37" style="width:1.875in;height:.3854in" id="_x0000_i1028" src="cid:image009.jpg@01D59624.80111590"></span></a><br>
<br>
<a href="https://addactis.letsignit.com/r/199/49e483e9-091d-4caf-a1b4-7e37d9c9ac9e/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="_x0000_i1027" src="cid:image010.png@01D59624.80111590"></span></a>  <a href="https://addactis.letsignit.com/r/42/72f7499f-cd02-4bd4-835a-88f1053cabf2/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="_x0000_i1026" src="cid:image011.png@01D59624.80111590"></span></a>  <a href="https://addactis.letsignit.com/r/45/b9ce1c50-1455-48cb-b90f-b8348d799476/undefined" target="_blank"><span style="color:blue;mso-fareast-language:FR;text-decoration:none"><img border="0" width="23" height="23" style="width:.2395in;height:.2395in" id="_x0000_i1025" src="cid:image012.png@01D59624.80111590"></span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</td>
<td width="3" style="width:1.5pt;background:#CCCCCC;padding:.75pt .75pt .75pt .75pt">
</td>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><span lang="EN-IE"><br>
</span><strong><span lang="EN-IE" style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:#3D93CB">   William </span></strong><span class="mibkeyword"><b><span lang="EN-IE" style="font-size:10.5pt;color:#3D93CB">LEVRA-JUILLET</span></b></span><span lang="EN-IE" style="font-size:10.5pt"><br>
<span style="color:#BBBBBB">   Senior Software Architect </span><br>
<strong><span style="font-family:"Calibri",sans-serif;color:#555555">   ADDACTIS Software</span></strong><br>
<span style="color:#BBBBBB">   +33 (0)4 81 92 13 00 <br>
   </span></span><span lang="EN-IE"><br>
<br>
</span><span lang="EN-IE" style="font-size:10.5pt;color:#54BBBA">   </span><span style="font-size:10.5pt;color:#54BBBA"><a href="https://addactis.letsignit.com/r/32/9cd210c2-e7cd-4d30-995a-e3ba4da16780/undefined" target="_blank"><span lang="EN-IE" style="color:#54BBBA">www.addactis.com</span></a></span><span lang="EN-IE" style="font-size:10.5pt;color:#54BBBA"> </span><span lang="EN-IE"><br>
 </span><span lang="EN-IE" style="font-size:12.0pt"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<a name="end_signature_lsi"></a></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span lang="EN-IE"><o:p> </o:p></span></p>
</div>
</body>
</html>