From maechler at stat.math.ethz.ch  Fri Aug  5 17:53:25 2016
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Fri, 5 Aug 2016 17:53:25 +0200
Subject: [Rd] findInterval(all.inside=TRUE) for degenerate 'vec'
	arguments
In-Reply-To: <CAF8bMcbGorHL_zf=M1x7cyMGC5-KnRsHPg+753CpohFx9CU5xA@mail.gmail.com>
References: <CAF8bMcbGorHL_zf=M1x7cyMGC5-KnRsHPg+753CpohFx9CU5xA@mail.gmail.com>
Message-ID: <22436.46709.943556.772466@stat.math.ethz.ch>

>>>>> William Dunlap via R-devel <r-devel at r-project.org>
>>>>>     on Thu, 4 Aug 2016 15:20:57 -0700 writes:

    > What should findInterval(x,vec,all.inside=TRUE) return when length(vec)<=1,
    > so there are no inside intervals?

    > R-3.3.0 gives a decreasing map of x->output when length(vec)==1 and -1's
    > when length(vec)==0.  Would '0' in all those cases be better?

Yes.  '0' would be according to the documentation,
and if you dig all the way down to the C part
(originally created via f2c (!)),
you'll notice that the -1
are really  from  'n - 1'  where n == 0 here ... a case that was
not even possible in the very original (Fortran!) code.

I'll commit a fix to the source
Martin

--
Martin Maechler
ETH Zurich /  R Core Team


    >> findInterval(x=c(10, 11, 12), vec=11, all.inside=TRUE,
    > rightmost.closed=FALSE, left.open=FALSE)
    > [1] 1 0 0
    >> findInterval(x=c(10, 11, 12), vec=11, all.inside=TRUE,
    > rightmost.closed=FALSE, left.open=TRUE)
    > [1] 1 1 0
    >> findInterval(x=c(10, 11, 12), vec=11, all.inside=TRUE,
    > rightmost.closed=TRUE, left.open=FALSE)
    > [1] 1 0 0
    >> findInterval(x=c(10, 11, 12), vec=11, all.inside=TRUE,
    > rightmost.closed=TRUE, left.open=TRUE)
    > [1] 1 1 0
    >> 
    >> findInterval(x=c(10, 11, 12), vec=numeric(), all.inside=TRUE,
    > rightmost.closed=FALSE, left.open=FALSE)
    > [1] -1 -1 -1
    >> findInterval(x=c(10, 11, 12), vec=numeric(), all.inside=TRUE,
    > rightmost.closed=FALSE, left.open=TRUE)
    > [1] -1 -1 -1
    >> findInterval(x=c(10, 11, 12), vec=numeric(), all.inside=TRUE,
    > rightmost.closed=TRUE, left.open=FALSE)
    > [1] -1 -1 -1
    >> findInterval(x=c(10, 11, 12), vec=numeric(), all.inside=TRUE,
    > rightmost.closed=TRUE, left.open=TRUE)
    > [1] -1 -1 -1

    > Bill Dunlap
    > TIBCO Software
    > wdunlap tibco.com

    > [[alternative HTML version deleted]]

    > ______________________________________________
    > R-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] findInterval(all.inside=TRUE) for degenerate 'vec' arguments
Martin Maechler