On Fri, Apr 20, 2012 at 2:48 PM, Ben quant <ccquant at gmail.com>
wrote:>
> Hello,
>
> If the exact value does not exist in the vector, can I still get at the
> intersections? Is there a simple way to do this and avoid looping? Seems
> like there would be a simple R function to do this...
>
> Example:
> vec <- c(5,4,3,2,3,4,5)
> vec
> [1] 5 4 3 2 3 4 5
> intersect(vec,2.5)
> numeric(0)
>
> I want to get:
> 2.5 and 2.5
You want to get what? How many times the line crosses 2.5? That's easy:
vec = c(5,4,3,2,3,4,5)
query = 2.5
n = length(vec)
v1 = vec[-1]
v2 = vec[-n];
# this tells you where the line crosses your query going up
crossesUp = which(v2 < query & v1 > query)
# this tells you where the line crosses your query going down
crossesDown = which(v2 > query & v1 < query)
numberOfCrossings = length(crossesUp) + length(crossesDown)
HTH
Peter