On Feb 3, 2010, at 6:25 AM, Martin Kappler wrote:

Hello,

I have to vectors high and low on a time scale as follows
time <- 1:5
low <- c(1, 2, 3, 4, 5)
high <- c(5, 4, 3, 4, 4)

Now I'm searching for an elegant solution to know if a data point in time is
inside the boundaries but not only on the predefined time points but
continuous (e.g. time=2.5). For this the boundary points should be
interpolated linearly.

InBoundaries(t=2, y=1)  => FALSE (too low)
InBoundaries(t=2, y=2) => TRUE (on lower boundary)
InBoundaries(t=2.5, y=3) => TRUE (between interpolation lines)
InBoundaries(t=2.5, y=3.5) => TRUE (on upper interpolation line
InBoundaries(t=2.5, y=3.51) => FALSE (above upper interpolation line)

?approxfun

lowaprx <- approxfun(low)
hiaprx <- approxfun(high)
> InBoundaries <- function(t,y) y >= lowaprx(t) & y <= hiaprx(t)

> InBoundaries(2,1)
[1] FALSE
> InBoundaries(2,2)
[1] TRUE
> InBoundaries(t=2.5, y=3) ; InBoundaries(t=2.5, y=3.5)
[1] TRUE
[1] TRUE
> InBoundaries(t=2.5, y=3.51)
[1] FALSE


--

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to