[Rcpp-devel] Possible error in setequal ??

Qiang Kou qkou at umail.iu.edu
Sat Jan 3 03:26:16 CET 2015


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 <qkou at 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 <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
>
>


-- 
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/a5005aca/attachment-0001.html>


More information about the Rcpp-devel mailing list