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 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, 10, col = "green")
points(x, y)
is.function(fc <- approxfun(x, y, method = "const")) # TRUE
curve(fc(x), 0, 10, col = "darkblue", add = TRUE)
## 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