代码之家  ›  专栏  ›  技术社区  ›  cephalopod

如何重新排列列表中的对象[重复]

  •  -1
  • cephalopod  · 技术社区  · 8 年前

    考虑以下示例:

    list1 <- split(mtcars, mtcars$cyl) 
    names(list1)
    
    [1] "4" "6" "8"
    

    如何将列表中的对象重新排列为 8, 4, 6 顺序

    这应该是一项简单的任务,我似乎无法用谷歌找到答案。

    有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Spacedman    8 年前

    我将使用一个更简单的列表,以便更容易看到发生了什么:

    > list1 = list("4"="Four","6"="Six","8"="Eight")
    > names(list1)
    [1] "4" "6" "8"
    > list1
    $`4`
    [1] "Four"
    
    $`6`
    [1] "Six"
    
    $`8`
    [1] "Eight"
    

    然后使用单方括号重新排序:

    > list2 = list1[c("8","4","6")]
    > list2
    $`8`
    [1] "Eight"
    
    $`4`
    [1] "Four"
    
    $`6`
    [1] "Six"
    
        2
  •  3
  •   clemens    8 年前

    您只需按照所需的顺序提供元素的索引向量,在本例中,您需要第三个,然后是第一个和第二个元素:

    list1 <- list1[c(3, 1, 2)]
    

    这将产生:

    names(list1)
    [1] "8" "4" "6"
    
    推荐文章