approxfun {base}R Documentation

Interpolation Functions

Description

Return a list of points which linearly interpolate given data points, or a function performing the linear (or constant) interpolation.

Usage

approx   (x, y, xout, method="linear", n=50,
          yleft, yright, rule=1, f=0)
approxfun(x, y,       method="linear",
          yleft, yright, rule=1, f=0)

Arguments

x,y vectors giving the coordinates of the points to be interpolated. Alternatively a single plotting structure can be specified.
xout an optional set of values specifying where interpolation is to take place.
method specifies the interpolation method to be used. Choices are "linear" or "constant".
n If xout is not specified, interpolation takes place at n equally spaced points spanning the interval [min(x), max(x)].
yleft the value to be returned when input x values less than min(x). The default is defined by the value of rule given below.
yright the value to be returned when input x values greater than max(x). The default is defined by the value of rule given below.
rule an integer describing how interpolation is to take place outside the interval [min(x), max(x)]. If rule is 1 then NAs are returned for such points and if it is 2, the value at the closest data extreme is used.
f For method="constant" a number between 0 and 1 inclusive, indicating a compromise between left- and right-continuous step functions. If y0 and y1 are the values to the left and right of the point then the value is y0*f+y1*(1-f) so that f=0 is right-continuous and f=1 is left-continuous.

Details

The inputs can contain missing values which are deleted, so at least two complete (x, y) pairs are required.

Value

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.

See Also

spline and splinefun for spline interpolation.

Examples

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"))  # T
curve(fc(x), 0, 10, col = "darkblue", add = TRUE)

[Package Contents]