在列表中查找最接近的值

时间:2014-03-30 19:09:09

标签: r

我有一个百分位列表,我希望通过指定概率来查询最接近的值,反之亦然。请考虑以下代码:

samples <- runif(1000, 0, 1)
percentiles <- quantile(samples,probs=(0:100)/100)
plot(percentiles)

我可以轻松阅读该图(例如50%prob - > 0.5),但是如何在列表中找到最接近的值(通过指定Y轴上的概率或值)?

谢谢!

2 个答案:

答案 0 :(得分:2)

先排序并查看邻居。

i <- 50
sorted_percentiles <- sort(percentiles) 
# the values adjacent to the 50th data point are:
sorted_percentiles[i - 1]
sorted_percentiles[i + 1]

答案 1 :(得分:2)

根据罗伯特的答案,你可以看看所有的邻居。巧合的是,结果是list形式。

> zzz <- sapply(1:(length(percentiles)-1), function(i){
    c(sort(percentiles)[i-1], sort(percentiles)[i+1])
    }, USE.NAMES = TRUE)[-1]

USE.NAMES的使用允许您通过列表索引轻松访问邻居。

> zzz[99]  ## neighbors of the 99th percentile
##       98%      100% 
## 0.9861953 0.9986512 
> zzz[25]  ## neighbors of the 25th percentile
##       24%       26% 
## 0.2654937 0.2926444 
> zzz[36]  ## neighbors of the 36th percentile
##       35%       37% 
## 0.3756176 0.3864981