【问题标题】:Arrange list of vectors排列向量列表
【发布时间】:2018-10-16 16:59:23
【问题描述】:

我有一个向量列表和另一个向量。我想根据另一个向量的值排列向量列表

a <- c(1, 2)
b <- c(1, 4)
c <- c(1, 1)  
x <- list(a, b, c)  # list of vector
v <- c(3, 2, 5)     # other vector

这里我想根据 v 排列 x。所以想要的输出是:

 2  b
 3  a
 5  c

【问题讨论】:

  • 你的问题我不清楚。 abc 是变量名称x 是未命名向量的list"b""a""c" 如何出现在您的预期输出中? “根据v排列x”是什么意思?您的意思是按v 中的值按数字顺序排列吗?

标签: r list sorting


【解决方案1】:

这是stackarrange 的选项

library(dplyr)
v %>%
   set_names(letters[1:3]) %>%
   stack %>%
   arrange(values)
#   values ind
#1      2   b
#2      3   a
#3      5   c

【讨论】:

    【解决方案2】:

    根据向量v的顺序先排序列表x,然后将向量与排序列表的名称绑定,形成相关列。

    会是这样的:

    cbind(as.data.frame(v), col = names(x))[order(v),]
    #  v col
    #2 2   b
    #1 3   a
    #3 5   c
    

    数据:

    a <- c(1, 2)
    b <- c(1, 4)
    c <- c(1, 1)  
    x <- list(a=a, b=b, c=c)  # list of vector
    v <- c(3, 2, 5)     # other vector
    

    【讨论】:

    • 应该是 2,3,5 。不是 3,2,5
    • @DipankarMondal 啊。明白了。可能你想sort 最终输出。更新了答案。看一看。请注意,list x 的创建已稍作更改以定义名称。
    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多