如何在向量中从5中选择3个最接近的值?

时间:2018-01-28 16:37:12

标签: r

如果我有一个值向量,我只需要一些,我怎样才能选择最接近的三个?

c(14.493,14.588,15.175,14.934,14.981)

2 个答案:

答案 0 :(得分:0)

假设您指的是与特定值最接近的3个,例如15,使用以下代码:

data_5 <- c(14.493,14.588,15.175,14.934,14.981)
data_3 <- data_5[order(abs(data_5-15))[1:3]]

答案 1 :(得分:0)

closest3=function(x){
y=`is.na<-`(y<-abs(outer(x,x,"-")),y==0)
d=t(apply(y,2,function(i)which(rank(i,,"last")%in%c(1,2))))
e=cbind(1:length(x),d)
pos=e[which.min(colSums(abs(apply(e,1,function(j)diff(x[j]))))),]
setNames(x[pos],pos)
}
x=c(14.493,14.588,15.175,14.934,14.981)
closest3(x)
     3      4      5 
15.175 14.934 14.981 

另一个例子:

x=c(1,0.9,5,4.5,12,0.8)#We expect 1,0.9 and 0.8
closest3(e)
  1   2   6 
1.0 0.9 0.8