使用purrr / tidyverse按名称按字母顺序对列表进行排序

时间:2019-01-29 09:42:47

标签: r tidyverse purrr

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

基本上,我正在寻找以下项目:

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

谢谢!

3 个答案:

答案 0 :(得分:1)

这里有一些冗长的解决方案:

library(tidyverse)
library(magrittr)

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

答案 1 :(得分:1)

您可以将基本功能与magrittr一起使用:

library(magrittr)

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

答案 2 :(得分:0)

非常冗长,但却迫使您至少使用一个tidyverse函数:

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