首页 > 解决方案 > 根据 R 中的给定值选择最接近且更大的值

问题描述

这里有2列

n <- c(10,30,50,80,100,300,500,800,1000,1500,2000)   
v <- c(1.3,1,0.85,0.75,0.65,0.5,0.4,0.35,0.3,0.26,0.23)

'n' 中的一个值对应于 'v' 中的一个值。现在,假设一个数字 x 作为以下函数的变量:

f<-function(x){1.3-(1.3-v)*(x-10)/(n-10)}

其中“n”是最接近“x”但更大的值。

示例:当 x=24,则 n=30,v=1,print(f)= 1.09 当 x=1001,则 n=1500,v=0.26,...

我需要打印 f 的所有值x <- seq(from=1, to=5000)

如何在 R 中实现这一点?

请帮忙。谢谢

标签: r

解决方案


我相信这就是您正在寻找的。

f <- function(x) {

  nn <- min(n[which( n > x)]) # closed higher value to x in n
  vv <- v[which(n == nn)]     # corresponding value to nn in v

  1.3 - (1.3 - vv) * (x - 10) / (nn - 10)
}

推荐阅读