首页 > 解决方案 > R; 如何找到“最接近”和“较小”的向量//并在同一行上查看另一个向量?

问题描述

我正在尝试找到最接近 0.5 但不大于该值的向量。我想在同一行打印另一个向量。

例如,我有这样的表名为“exp”

num  possibility
1     0.16
2     0.43
5     0.64
4     0.12
3     0.76
.
.
.

我试图找到,“哪种可能性最接近并且小于 0.5?”。答案是第二行,其中包含 'num==2' 'possibility==0.43' 但是如何通过编码找到它?

我正在尝试计算“num”的“+-2”范围,其可能性最接近且小于“0.5”。num肯定是“5”,范围是“3~7”。

但是如何使用链接代码立即执行此操作?

如果我有太多的 exp1、exp2、exp3、exp4... 来做同样的工作怎么办?我怎样才能自动做到这一点?

我试过了。

exp[which.min(exp$possibility-0.5 <0) -1 , 1]

x < exp[which.min(exp$possibility-0.5 <0) -1 , 1]+2
& x> exp[which.min(exp$possibility-0.5 <0) -1 , 1]-2

这是我最好的。但我不知道为什么在“which.min”函数中添加“<0”会有所不同,就像“ifelse”一样。以及如何在“which.min”函数之后不使用“-1”来找到“最近的较小的”。

其实我更想知道什么是更简单,更有用的工具。

请帮忙..

标签: r

解决方案


你可以尝试这样的事情。你基本上可以设置 3 来获得变化。你也可以把它放在一个函数中,并使用 lapply 来遍历所有 cols。

f=data.frame(a=seq(1:10), b=runif(10))
c=0.5
z=f$b-c
z=ifelse(z>0, 99, z) # add if you dont want values above 0.5
z=abs(z)
z1=order(z)[1:3]
f$b[z1]

推荐阅读