approxfun
位于 stats
包(package)。 说明
返回对给定数据点进行线性插值的点列表,或执行线性(或常量)插值的函数。
用法
approx (x, y = NULL, xout, method = "linear", n = 50,
yleft, yright, rule = 1, f = 0, ties = mean, na.rm = TRUE)
approxfun(x, y = NULL, method = "linear",
yleft, yright, rule = 1, f = 0, ties = mean, na.rm = TRUE)
参数
x, y |
给出要插值点的坐标的数值向量。或者,可以指定单个绘图结构:请参阅 |
xout |
一组可选的数值,指定插值发生的位置。 |
method |
指定要使用的插值方法。选项为 |
n |
如果未指定 |
yleft |
当输入 |
yright |
当输入 |
rule |
一个整数(长度为 1 或 2),说明如何在区间 [ |
f |
对于 |
ties |
处理绑定的 |
na.rm |
逻辑指定应如何处理缺失值( |
细节
输入可以包含被删除的缺失值(如果 na.rm
为 true,即默认情况下),因此至少需要两个完整的 (x, y)
对(对于 method =
"linear"
,否则一对)。如果存在重复(捆绑)的 x
值,并且 ties
包含一个函数,则该函数将应用于每个不同的 x
值的 y
值,以生成具有唯一 x
的 (x,y)
对。此上下文中有用的函数包括 mean
、 min
和 max
。
如果 ties = "ordered"
则假定 x
值已经排序(并且是唯一的),并且不检查关系,但如果存在关系则保留。这是大型 length(x)
最快的选项。
如果 ties
是长度为 2 的 list
,则 ties[[2]]
必须是应用于关系的函数,请参见上文,但如果 ties[[1]]
与 "ordered"
相同,则假定 x
值是已排序并且仅检查平局。因此,在这种情况下,ties = list("ordered", mean)
将比默认的 ties = mean
稍微高效一些。
第一个 y
值将用于向左插值,最后一个值将用于向右插值。
值
approx
返回一个包含组件 x
和 y
的列表,其中包含 n
坐标,该坐标根据所需的 method
(和 rule
)插入给定的数据点。
函数 approxfun
返回一个对给定数据点执行(线性或常数)插值的函数。对于给定的一组x
值,此函数将返回相应的插值。它使用创建时存储在其环境中的数据,其详细信息可能会发生变化。
警告
返回的值approxfun
包含对当前版本中代码的引用R:它不打算保存并加载到不同的R会议。这对于更安全R>= 3.0.0。
例子
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)
### Treatment of 'NA's -- are kept if na.rm=FALSE :
xn <- 1:4
yn <- c(1,NA,3:4)
xout <- (1:9)/2
## Default behavior (na.rm = TRUE): NA's omitted; extrapolation gives NA
data.frame(approx(xn,yn, xout))
data.frame(approx(xn,yn, xout, rule = 2))# -> *constant* extrapolation
## New (2019-2020) na.rm = FALSE: NA's are "kept"
data.frame(approx(xn,yn, xout, na.rm=FALSE, rule = 2))
data.frame(approx(xn,yn, xout, na.rm=FALSE, rule = 2, method="constant"))
## NA's in x[] are not allowed:
stopifnot(inherits( try( approx(yn,yn, na.rm=FALSE) ), "try-error"))
## Give a nice overview of all possibilities rule * method * na.rm :
## ----------------------------- ==== ====== =====
## extrapolations "N":= NA; "C":= Constant :
rules <- list(N=1, C=2, NC=1:2, CN=2:1)
methods <- c("constant","linear")
ry <- sapply(rules, function(R) {
sapply(methods, function(M)
sapply(setNames(,c(TRUE,FALSE)), function(na.)
approx(xn, yn, xout=xout, method=M, rule=R, na.rm=na.)$y),
simplify="array")
}, simplify="array")
names(dimnames(ry)) <- c("x = ", "na.rm", "method", "rule")
dimnames(ry)[[1]] <- format(xout)
ftable(aperm(ry, 4:1)) # --> (4 * 2 * 2) x length(xout) = 16 x 9 matrix
## Show treatment of 'ties' :
x <- c(2,2:4,4,4,5,5,7,7,7)
y <- c(1:6, 5:4, 3:1)
(amy <- approx(x, y, xout = x)$y) # warning, can be avoided by specifying 'ties=':
op <- options(warn=2) # warnings would be error
stopifnot(identical(amy, approx(x, y, xout = x, ties=mean)$y))
(ay <- approx(x, y, xout = x, ties = "ordered")$y)
stopifnot(amy == c(1.5,1.5, 3, 5,5,5, 4.5,4.5, 2,2,2),
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
options(op) # revert 'warn'ing level
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相关用法
- R aggregate 计算数据子集的汇总统计
- R alias 查找模型中的别名(依赖项)
- R anova.glm 广义线性模型拟合的偏差分析
- R anova.mlm 多元线性模型之间的比较
- R addmargins 在多维表或数组上设置任意边距
- R anova 方差分析表
- R asOneSidedFormula 转换为单边公式
- R as.hclust 将对象转换为 hclust 类
- R ar.ols 通过 OLS 将自回归模型拟合到时间序列
- R arima.sim 从 ARIMA 模型进行模拟
- R ar 将自回归模型拟合到时间序列
- R arima 时间序列的 ARIMA 建模
- R ansari.test 安萨里-布拉德利检验
- R add1 在模型中添加或删除所有可能的单项
- R acf 自协方差和互协方差以及相关函数估计
- R aov 拟合方差分析模型
- R ave 因子水平组合的组平均值
- R arima0 时间序列的 ARIMA 建模 – 初步版本
- R acf2AR 计算精确拟合 ACF 的 AR 过程
- R anova.lm 线性模型拟合的方差分析
- R stlmethods STL 对象的方法
- R medpolish 矩阵的中值波兰(稳健双向分解)
- R naprint 调整缺失值
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Interpolation Functions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。