| approxfun {stats} | R Documentation | 
Return a list of points which linearly interpolate given data points, or a function performing the linear (or constant) interpolation.
approx   (x, y = NULL, xout, method="linear", n=50,
          yleft, yright, rule = 1, f = 0, ties = mean)
approxfun(x, y = NULL,       method="linear",
          yleft, yright, rule = 1, f = 0, ties = mean)
x, y | 
 vectors giving the coordinates of the points to be
interpolated.  Alternatively a single plotting structure can be
specified: see   | 
xout | 
 an optional set of values specifying where interpolation is to take place.  | 
method | 
 specifies the interpolation method to be used.  Choices
are   | 
n | 
 If   | 
yleft | 
 the value to be returned when input   | 
yright | 
 the value to be returned when input   | 
rule | 
 an integer (of length 1 or 2) describing how interpolation
is to take place outside the interval [  | 
f | 
 for   | 
ties | 
 Handling of tied   | 
The inputs can contain missing values which are deleted, so at least
two complete (x, y) pairs are required (for method =
  "linear", one otherwise).  If there are duplicated (tied) x
values and ties is a function it is applied to the y
values for each distinct x value.
Useful functions in this context include mean,
min, and max.  If ties="ordered"
the x values are assumed to be already ordered.  The first
y value will be used for interpolation to the left and the last
one for interpolation to the right.
approx returns a list with components x and y,
containing n coordinates which interpolate the given data
points according to the method (and rule) desired.
The function approxfun returns a function performing (linear or
constant) interpolation of the given data points.  For a given set of
x values, this function will return the corresponding
interpolated values.  This is often more useful than approx.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
spline and splinefun for spline
interpolation.
require(graphics)
x <- 1:10
y <- rnorm(10)
par(mfrow = c(2,1))
plot(x, y, main = "approx(.) and approxfun(.)")
points(approx(x, y), col = 2, pch = "*")
points(approx(x, y, method = "constant"), col = 4, pch = "*")
f <- approxfun(x, y)
curve(f(x), 0, 11, col = "green2")
points(x, y)
is.function(fc <- approxfun(x, y, method = "const")) # TRUE
curve(fc(x), 0, 10, col = "darkblue", add = TRUE)
## different extrapolation on left and right side :
plot(approxfun(x, y, rule = 2:1), 0, 11,
     col = "tomato", add = TRUE, lty = 3, lwd = 2)
## Show treatment of 'ties' :
x <- c(2,2:4,4,4,5,5,7,7,7)
y <- c(1:6, 5:4, 3:1)
approx(x,y, xout=x)$y # warning
(ay <- approx(x,y, xout=x, ties = "ordered")$y)
stopifnot(ay == c(2,2,3,6,6,6,4,4,1,1,1))
approx(x,y, xout=x, ties = min)$y
approx(x,y, xout=x, ties = max)$y