<div dir="ltr">Thanks James for the quick reply.<div><br></div><div>Here you go:</div><div><br></div><div><img src="cid:ii_15d846f62ffef962" alt="Inline image 1" width="275" height="431"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 27, 2017 at 9:14 AM, Balamuta, James Joseph <span dir="ltr"><<a href="mailto:balamut2@illinois.edu" target="_blank">balamut2@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="m_1441083987085690228WordSection1">
<p class="MsoNormal">Greetings and Salutations Sharat,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Could you supply some test data?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Sincerely,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">JJB<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> <a href="mailto:rcpp-devel-bounces@lists.r-forge.r-project.org" target="_blank">rcpp-devel-bounces@lists.r-<wbr>forge.r-project.org</a> [mailto:<a href="mailto:rcpp-devel-bounces@lists.r-forge.r-project.org" target="_blank">rcpp-devel-bounces@<wbr>lists.r-forge.r-project.org</a>]
<b>On Behalf Of </b>Sharat<br>
<b>Sent:</b> Thursday, July 27, 2017 8:31 AM<br>
<b>To:</b> <a href="mailto:rcpp-devel@lists.r-forge.r-project.org" target="_blank">rcpp-devel@lists.r-forge.r-<wbr>project.org</a><br>
<b>Subject:</b> [Rcpp-devel] Fwd: Calling R function in Rcpp returns compatibility issues<u></u><u></u></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">Hi:<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I'm trying to call a R function (that compares strings) in Rcpp and return the result to make the comparisons run faster. Am a noob with Rcpp; so please bear. The input to the R function is a matrix of 2 columns. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">The error is: <b>Error in getGoing(product) : Not compatible with STRSXP: [type=NULL]. </b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Please assist. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">#include<Rcpp.h><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">using namespace Rcpp;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">/*** R<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">comps= function(vec)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">{<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  streets <- vec<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  cnt <- nrow(streets)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  res <- c()<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  print(paste0("Comparing ", (cnt)," pairs..."))<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  for (i in 1:cnt)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    matched <- TRUE    <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    prop1 = streets[i,1]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    prop2 = streets[i,2]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">    prop1_parts = strsplit(trimws(prop1), ' ')<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    prop2_parts = strsplit(trimws(prop2), ' ')<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    prop1_parts_count = length(prop1_parts[[1]])<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    prop2_parts_count = length(prop2_parts[[1]])<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    if (prop1_parts_count == prop2_parts_count)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      for (x in 1:prop1_parts_count)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        part1 = prop1_parts[[1]][x]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        part2 = prop2_parts[[1]][x]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        if (part1 == part2) { <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            matched = matched & TRUE <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        else if (adist(part1, part2, partial = T)==0 | adist(part2,part1, partial = T)==0){ <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            matched = matched & TRUE<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        else {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">          matched = matched & FALSE<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">          break<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      }#forloop ends<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      if(matched){<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">        append(res,paste(prop1,"<-->", prop2))<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    }#if loops ends <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  }#primary for loops ends<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  res<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">}#function ends <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">*/<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">// [[Rcpp::export]]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Rcpp::StringMatrix getGoing(Rcpp::StringVector vec){<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  Rcpp::Environment env = Rcpp::Environment::global_env(<wbr>);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  Rcpp::Function f = env["comps"];  <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  Rcpp::StringMatrix result = f(vec);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  return result;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">    <u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
</div>
</div>

</blockquote></div><br></div>