[Rcpp-devel] Possible error in setequal ??

Qiang Kou qkou at umail.iu.edu
Sat Jan 3 03:23:31 CET 2015


I think the bug is from [1].

This line doesn't make much sense.

Best,

KK


[1]
https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80

On Fri, Jan 2, 2015 at 9:22 PM, Kevin Ushey <kevinushey at gmail.com> wrote:

> Hi Søren,
>
> Thanks for the bug report -- it looks like you're right, `setequal` is
> broken, and we never knew about it because we don't have any unit
> tests for it. Whoops!
>
> I'll take a look at what's going on and commit a fix + tests soon --
> for now, you can use the workaround with `setdiff` which appears to
> behave correctly.
>
> Cheers,
> Kevin
>
> On Fri, Jan 2, 2015 at 3:13 PM, Søren Højsgaard <sorenh at math.aau.dk>
> wrote:
> > Dear all,
> >
> > There might be an error in setequal() from sugar. Consider this
> >
> > #include <Rcpp.h>
> > using namespace Rcpp;
> >
> > //[[Rcpp::export]]
> > bool seteq1(CharacterVector x, CharacterVector y){
> >   return setequal(x,y);
> > }
> >
> > //[[Rcpp::export]]
> > bool seteq2(CharacterVector x, CharacterVector y){
> >   return
> >         (((CharacterVector) setdiff(x,y)).length()==0) &
> >         (((CharacterVector) setdiff(y,x)).length()==0) ;
> > }
> >
> > The examples below does not give what I expect when calling seteq1
> whereas seteq2 gives what I expect. Am I completely wrong here?
> >
> > Regards
> > Søren
> >
> > seteq1(c(1,2,3), c(3,2,1))
> > seteq1(c("a","b"), c("a","b"))
> > seteq1(c(1,2,3), c(3,2))
> > seteq1(c("a","b"), c("a","b","k"))
> >
> > seteq2(c(1,2,3), c(3,2,1))
> > seteq2(c("a","b"), c("a","b"))
> > seteq2(c(1,2,3), c(3,2))
> > seteq2(c("a","b"), c("a","b","k"))
> >
> >> seteq1(c(1,2,3), c(3,2,1))
> > [1] FALSE
> >
> >> seteq1(c("a","b"), c("a","b"))
> > [1] FALSE
> >
> >> seteq1(c(1,2,3), c(3,2))
> > [1] FALSE
> >
> >> seteq1(c("a","b"), c("a","b","k"))
> > [1] FALSE
> >
> >> seteq2(c(1,2,3), c(3,2,1))
> > [1] TRUE
> >
> >> seteq2(c("a","b"), c("a","b"))
> > [1] TRUE
> >
> >> seteq2(c(1,2,3), c(3,2))
> > [1] FALSE
> >
> >> seteq2(c("a","b"), c("a","b","k"))
> > [1] FALSE
> >
> > _______________________________________________
> > 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
>



-- 
Qiang Kou
qkou at umail.iu.edu
School of Informatics and Computing, Indiana University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20150102/72daa278/attachment.html>


More information about the Rcpp-devel mailing list