如果我有一个值向量,我只需要一些,我怎样才能选择最接近的三个?
c(14.493,14.588,15.175,14.934,14.981)
答案 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