<div dir="ltr">Hi,<div><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif"><br></p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif">I'm writing a R package by Rcpp and I have a problem when setting default value when call a R function in Rcpp. Here is an example to pass a R function to C++, provided by<span class="inbox-inbox-Apple-converted-space"> </span><a href="http://adv-r.had.co.nz/Rcpp.html" rel="nofollow noreferrer" style="margin:0px;padding:0px;border:0px;color:rgb(0,89,153);text-decoration:none">http://adv-r.had.co.nz/Rcpp.html</a></p><pre class="inbox-inbox-default inbox-inbox-prettyprint inbox-inbox-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit"><span class="inbox-inbox-com" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">#include</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-str" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)"><Rcpp.h></span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="inbox-inbox-kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">using</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">namespace</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Rcpp</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">;</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="inbox-inbox-com" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">// [[Rcpp::export]]</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="inbox-inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">RObject</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> callWithOne</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="inbox-inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Function</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> f</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
  </span><span class="inbox-inbox-kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">return</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> f</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="inbox-inbox-lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">1</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif">The question is, how to set the default value for f? I would like to have the choice to pass a function or not, like</p><pre class="inbox-inbox-default inbox-inbox-prettyprint inbox-inbox-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit"><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">callWithOne</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="inbox-inbox-typ" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">Function</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> f </span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> NULL</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
  </span><span class="inbox-inbox-com" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">// if pass f, run f(1)</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
  </span><span class="inbox-inbox-com" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">// else, run something else</span><span class="inbox-inbox-pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="inbox-inbox-pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span></code></pre></div><div><br></div><div>Thanks!</div><div><br></div><div>Best,</div><div>Jingyu He</div></div>