This help topic is for R version 1.1. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/splinefun.html
splinefun {base}R Documentation

Interpolating Splines

Description

Perform cubic spline interpolation of given data points, returning either a list of points obtained by the interpolation or a function performing the interpolation. splinefun(x, y, method = "fmm") spline(x, y, n = 3*length(x), method = "fmm", xmin = min(x), xmax = max(x)) \itemx,yvectors giving the coordinates of the points to be interpolated. Alternatively a single plotting structure can be specified. \itemmethodspecifies the type of spline to be used. Possible values are "fmm", "natural" and "periodic". \itemninterpolation takes place at n equally spaced points spanning the interval [xmin, xmax]. \itemxminleft-hand endpoint of the interpolation interval. \itemxmaxright-hand endpoint of the interpolation interval. If method = "fmm", the spline used is that of Forsythe, Malcolm and Moler (an exact cubic is fitted through the four points at each end of the data, and this is used to determine the end conditions). Natural splines are used when method="natural", and periodic splines when method="periodic". spline returns a list containing components x and y which give the ordinates where interpolation took place and the interpolated values.

splinefun returns a function which will perform cubic spline interpolation of the given data points. This is often more useful than spline. Forsythe, G. E., Malcolm, M. A. and Moler, C. B. (1977) Computer Methods for Mathematical Computations. approx and approxfun for constant and linear interpolation. op <- par(mfrow = c(2,1), mgp = c(2,.8,0), mar = .1+c(3,3,3,1)) n <- 9 x <- 1:n y <- rnorm(n) plot(x, y, main = paste("spline[fun](.) through",n,"points")) lines(spline(x, y)) lines(spline(x, y, n = 201), col = 2)

y <- (x-6)^2 plot(x, y, main = "spline(.) – 3 methods") lines(spline(x, y, n = 201), col = 2) lines(spline(x, y, n = 201, method = "natural"), col = 3) lines(spline(x, y, n = 201, method = "periodic"), col = 4) legend(6,25, c("fmm","natural","periodic"), col=2:4, lty=1)

f <- splinefun(x, y) ls(envir = environment(f)) splinecoef <- eval(expression(z), envir = environment(f)) curve(f(x), 1, 10, col = "green", lwd = 1.5) points(splinecoef, col = "purple", cex = 2) par(op) math dplot


[Package base version 1.1 ]