【问题标题】:Sort list alphabetically by name using purrr/tidyverse使用 purrr/tidyverse 按名称的字母顺序对列表进行排序
【发布时间】:2019-01-29 09:42:47
【问题描述】:

如何使用 purrr(或 tidyverse 中的其他包)按名称的字母顺序对列表进行排序?

基本上我正在寻找相当于:

lst <- list(b = letters, c = 1:100, a = runif(10))
lst <- lst[order(names(lst))]

谢谢!

【问题讨论】:

  • 您当前的解决方案有什么问题?为什么要替换它?
  • 我正在寻找一个 tidyverse 解决方案,我很想知道它是否存在,或者这确实是唯一的方法。

标签: r tidyverse purrr


【解决方案1】:

您可以使用带有 magrittr 的基本函数:

library(magrittr)

lst %>%
  .[order(names(.))]

【讨论】:

    【解决方案2】:

    这里有一些详细的解决方案:

    library(tidyverse)
    library(magrittr)
    
    lst %>%
      tibble(
        lst = .,
        nm = names(.)
      ) %>%
      arrange(nm) %$%
      set_names(lst, nm)
    

    【讨论】:

      【解决方案3】:

      非常冗长但强迫你至少使用一个tidyverse函数:

      tmp <- names(lst)
      purrr::map(tmp, ~ {f <- sort(tmp, partial = 1)[1]; tmp <<- setdiff(tmp, f); lst[[f]]})
      

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多