It seems fixed after removing that line [1]. > library(Rcpp) > sourceCpp("seteq.cpp") > seteq1(c(1,2,3), c(3,2,1)) [1] TRUE > seteq1(c(1,2,3), c(3,2,1)) [1] TRUE > seteq1(c("a","b"), c("a","b")) [1] TRUE > seteq1(c(1,2,3), c(3,2)) [1] FALSE > seteq1(c("a","b"), c("a","b","k")) [1] FALSE > seteq1(c("a","b"), c("a","b","b")) [1] TRUE
[1] https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/setdiff.h#L80 On Fri, Jan 2, 2015 at 9:23 PM, Qiang Kou <q...@umail.iu.edu> wrote: > 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 <kevinus...@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 <sor...@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@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@lists.r-forge.r-project.org >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >> > > > > -- > Qiang Kou > q...@umail.iu.edu > School of Informatics and Computing, Indiana University > > -- Qiang Kou q...@umail.iu.edu School of Informatics and Computing, Indiana University
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel