我有一个百分位列表,我希望通过指定概率来查询最接近的值,反之亦然。请考虑以下代码:
samples <- runif(1000, 0, 1)
percentiles <- quantile(samples,probs=(0:100)/100)
plot(percentiles)
我可以轻松阅读该图(例如50%prob - > 0.5),但是如何在列表中找到最接近的值(通过指定Y轴上的概率或值)?
谢谢!
答案 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