求助:使用R语言approxfun()仅返回y首项观测值的问题
使用approxfun()返回重复初始值的问题与解决
问题描述
我尝试用approxfun()为名为supply1的xy数据框拟合近似函数,该数据框包含363行数据:
> head(supply1) x y 1 23367.20 92.43423 2 23603.24 93.36791 3 23841.65 94.31102 4 24082.48 95.26366 5 24325.73 96.22592 6 24571.45 97.19789
调用生成的函数时,传入的x值返回的全是初始y值92.43423:
> fun_supply <- approxfun(supply1$x, supply1$y, rule = 2) > fun_supply(c(1,100,500,1000)) [1] 92.43423 92.43423 92.43423 92.43423
我原本期望得到递增的y值,请问问题出在哪?
解决方案
问题根源很简单:你传入的x值远小于supply1中x的最小值(23367.20)。
你设置了rule = 2参数,这个参数的作用是:当输入的x超出原数据x的取值范围时,返回对应边界的y值——这里输入的x都小于原数据的最小x,所以会一直返回最小x对应的初始y值92.43423。
如果要得到递增的y值,你需要传入**落在原数据x范围内(或大于原数据x最大值)**的数值,比如:
> fun_supply(c(23367, 23600, 24000))
这样就能得到符合预期的递增y值了。
我特意保留这个问题,给后续犯同样错误的人做参考。
内容的提问来源于stack exchange,提问作者KjetilH
相关产品推荐
相关产品推荐

