我在插值时在开头和结尾得到一些极值。
实际上,最后的 b 值不应大于 max(b(,第一个值不应小于 0。
数据示例:
a<-c(1, 3, 4, 6, 8.7, 9, 10, 12, 19.3, 20)
b<-c(10, 30, 40, 60, 87, 90, 100, 120, 190, 200)
df<-data.frame(a=a, b=b)
> df
a b
1 1.0 10
2 3.0 30
3 4.0 40
4 6.0 60
5 8.7 87
6 9.0 90
7 10.0 100
8 12.0 120
9 19.3 190
10 20.0 200
这是我现在使用的代码:
Hmisc::approxExtrap(df$a, df$b, xout = c(0:25))
用pmin
和pmax
包裹它:
pmin(max(df$b), pmax(min(df$b), approxExtrap(df$a, df$b, xout = c(0:25))))
这将保持b
的上限和下限。如果要将b
的下限(当前为 1(替换为0
,请将min(df$b)
替换为0
。