<div dir="ltr">It seems fixed after removing that line [1].<div><br></div><div><div>> library(Rcpp)</div><div>> sourceCpp("seteq.cpp")</div><div>> seteq1(c(1,2,3), c(3,2,1))</div><div>[1] TRUE</div><div>> seteq1(c(1,2,3), c(3,2,1))</div><div>[1] TRUE</div><div>> seteq1(c("a","b"), c("a","b"))</div><div>[1] TRUE</div><div>> seteq1(c(1,2,3), c(3,2))</div><div>[1] FALSE</div><div>> seteq1(c("a","b"), c("a","b","k"))</div><div>[1] FALSE</div><div>> seteq1(c("a","b"), c("a","b","b"))</div><div>[1] TRUE</div></div><div><br></div><div>[1] <a href="https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80">https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80</a></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 2, 2015 at 9:23 PM, Qiang Kou <span dir="ltr"><<a href="mailto:qkou@umail.iu.edu" target="_blank">qkou@umail.iu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think the bug is from [1].<div><br></div><div>This line doesn't make much sense.</div><div><br></div><div>Best,</div><div><br></div><div>KK<br><div><br></div><div><br></div><div>[1] <a href="https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80" target="_blank">https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80</a><br></div></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On Fri, Jan 2, 2015 at 9:22 PM, Kevin Ushey <span dir="ltr"><<a href="mailto:kevinushey@gmail.com" target="_blank">kevinushey@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Søren,<br>
<br>
Thanks for the bug report -- it looks like you're right, `setequal` is<br>
broken, and we never knew about it because we don't have any unit<br>
tests for it. Whoops!<br>
<br>
I'll take a look at what's going on and commit a fix + tests soon --<br>
for now, you can use the workaround with `setdiff` which appears to<br>
behave correctly.<br>
<br>
Cheers,<br>
Kevin<br>
<div><div><br>
On Fri, Jan 2, 2015 at 3:13 PM, Søren Højsgaard <<a href="mailto:sorenh@math.aau.dk" target="_blank">sorenh@math.aau.dk</a>> wrote:<br>
> Dear all,<br>
><br>
> There might be an error in setequal() from sugar. Consider this<br>
><br>
> #include <Rcpp.h><br>
> using namespace Rcpp;<br>
><br>
> //[[Rcpp::export]]<br>
> bool seteq1(CharacterVector x, CharacterVector y){<br>
>   return setequal(x,y);<br>
> }<br>
><br>
> //[[Rcpp::export]]<br>
> bool seteq2(CharacterVector x, CharacterVector y){<br>
>   return<br>
>         (((CharacterVector) setdiff(x,y)).length()==0) &<br>
>         (((CharacterVector) setdiff(y,x)).length()==0) ;<br>
> }<br>
><br>
> The examples below does not give what I expect when calling seteq1 whereas seteq2 gives what I expect. Am I completely wrong here?<br>
><br>
> Regards<br>
> Søren<br>
><br>
> seteq1(c(1,2,3), c(3,2,1))<br>
> seteq1(c("a","b"), c("a","b"))<br>
> seteq1(c(1,2,3), c(3,2))<br>
> seteq1(c("a","b"), c("a","b","k"))<br>
><br>
> seteq2(c(1,2,3), c(3,2,1))<br>
> seteq2(c("a","b"), c("a","b"))<br>
> seteq2(c(1,2,3), c(3,2))<br>
> seteq2(c("a","b"), c("a","b","k"))<br>
><br>
>> seteq1(c(1,2,3), c(3,2,1))<br>
> [1] FALSE<br>
><br>
>> seteq1(c("a","b"), c("a","b"))<br>
> [1] FALSE<br>
><br>
>> seteq1(c(1,2,3), c(3,2))<br>
> [1] FALSE<br>
><br>
>> seteq1(c("a","b"), c("a","b","k"))<br>
> [1] FALSE<br>
><br>
>> seteq2(c(1,2,3), c(3,2,1))<br>
> [1] TRUE<br>
><br>
>> seteq2(c("a","b"), c("a","b"))<br>
> [1] TRUE<br>
><br>
>> seteq2(c(1,2,3), c(3,2))<br>
> [1] FALSE<br>
><br>
>> seteq2(c("a","b"), c("a","b","k"))<br>
> [1] FALSE<br>
><br>
> _______________________________________________<br>
> Rcpp-devel mailing list<br>
> <a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">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>
_______________________________________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">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></div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div><div dir="ltr">Qiang Kou<div><a href="mailto:qkou@umail.iu.edu" target="_blank">qkou@umail.iu.edu</a><br><div>School of Informatics and Computing, Indiana University</div><div><br></div></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Qiang Kou<div><a href="mailto:qkou@umail.iu.edu" target="_blank">qkou@umail.iu.edu</a><br><div>School of Informatics and Computing, Indiana University</div><div><br></div></div></div></div>
</div>