【问题标题】:Ordering a list according to a target vector根据目标向量对列表进行排序
【发布时间】:2018-10-22 03:20:30
【问题描述】:

假设我有一个列表:

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

我想根据其他向量的元素对这个列表进行排序。假设向量:

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

这里列表“lst”的第一个元素与向量“v”的第一个元素相关,对于第二个、第三个和第四个也是类似的。因为,-5

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

这将是最终输出。

【问题讨论】:

  • 这样的:lst[order(v)]?检查函数顺序。
  • 谢谢亲爱的...效果很好

标签: r list sorting


【解决方案1】:

这不是某个地方存在的唯一衬里,而是一种解决方法。为您提供所需的输出。如有必要,您可以按升序或降序调整顺序。

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

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 2023-03-19
    • 2016-01-31
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多