根据目标矢量排序列表

时间:2018-05-11 16:49:16

标签: r list sorting

假设我有一个清单:

  lst <- list(c(1,2), c(1,0), c(4,1), c(-7,11) )

我想根据其他矢量的元素订购此列表。假设向量:

 v<- c(-1, 3, 0, -5) 

列表中的第一个元素&#34; lst&#34;与向量的第一个元素有关&#34; v&#34;同样的第2,第3和第4。由于,-5 <-1 <0 <3,所以列表的期望顺序应为:

 list(c(-7,11), c(1,2), c(4,1), c(1,0))

这将是最终输出。

1 个答案:

答案 0 :(得分:0)

这不是一个存在于某处的线路,而是一种解决方法。为您提供所需的输出。如有必要,您可以调整订单的升序或降序。

lst <- list(c(1,2), c(1,0), c(4,1), c(-7,11) )
v <- c(-1, 3, 0, -5) 
new.order <- seq(1:length(v))
ref.frame <- data.frame(v,new.order)
ref.frame <- ref.frame[order(v),] 

> ref.frame
   v  new.order
4 -5          4
1 -1          1
3  0          3
2  3          2

lst <- lst[c(ref.frame$new.order)]

> lst
[[1]]
[1] -7 11

[[2]]
[1] 1 2

[[3]]
[1] 4 1

[[4]]
[1] 1 0