You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:23:27