r - 根据 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 中实现这一点?
请帮忙。谢谢
解决方案
我相信这就是您正在寻找的。
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)
}
推荐阅读
- jsp - 将 servlet 转换为 Jax-RS Web 服务时如何替换隐式 pageContext 对象?
- php - php 序列化巨大的浮点数导致舍入和格式问题
- python - 使用组结果转换 pandas DataFrame
- jquery-mobile - jQuery Mobile data-native-menu="true" 新窗口问题
- ios - APNS:如果使用 Auth Key,是否需要 APNS 证书?
- angularjs - 尝试验证 Firestore 用户只能在他们自己的 UID 下发表评论时被拒绝
- python - SWIG,C,Python - 将 char * 传递给 python 时忽略 NULL 终止符
- python-3.x - Pandas 按和条件比率分组
- gcc - 从拇指内联汇编分支到交流符号
- php - php mysqli 列出结果除了带 * 的