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 xy.coords . |
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 are
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 are
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 NA s 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*(1-f)+y1*f so that f=0 is right-continuous and
f=1 is left-continuous. |
ties |
Handling of tied x values. Either a function
with a single vector argument returning a single number result or
the string "ordered" . |
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.
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