x = c(12,34,5,6,7)
y = c("A","B","C","D","E")
for(i in 1:length(x)){
i = which.min(x)
d = x-x[i]
j = which.min(d[d>0])
fevent = i
nevent = j
print(fevent)
print(nevent)
x = x[-i]
y = y[-i]
}
输出
发烧痣C DD EE AA B
我不确定之后是否就是这样
> y[order(x)]
[1] "C" "D" "E" "A" "B"
如果你想要循环的代码,我建议使用while
循环
while(length(y)>0) {
i <- which.min(x)
print(y[i])
x <- x[-i]
y <- y[-i]
j <- which.min(x)
print(y[j])
}
它给出
[1] "C"
[1] "D"
[1] "D"
[1] "E"
[1] "E"
[1] "A"
[1] "A"
[1] "B"
[1] "B"
如果你想保存输出,你可以尝试下面的代码
fevent <- nevent <- c()
while(length(y)>0) {
i <- which.min(x)
fevent <- c(fevent,y[i])
x <- x[-i]
y <- y[-i]
j <- which.min(x)
nevent <- c(nevent,y[j])
}
out <- cbind(fevent = fevent[1:length(nevent)],nevent)
它给出
> out
fevent nevent
[1,] "C" "D"
[2,] "D" "E"
[3,] "E" "A"
[4,] "A" "B"