重新排列列表列表中的元素

时间:2017-11-24 12:32:23

标签: r list reorderlist

我有一个列表列表,并且具有相同数量的对象,如下所示:

my_lists <- list(
  second = c('foo','bar','potato'),
  first = c(1,4,2),
  third = data_frame(first_name  = c(1,2,3),middle_name = c(34,5,3), 
   last_name = c(3,9,1))
   )
 my_lists

$second
[1] "foo"    "bar"    "potato"

$first
[1] 1 4 2

$third
# A tibble: 3 x 3
  first_name middle_name last_name
       <dbl>       <dbl>     <dbl>
1          1          34         3
2          2           5         9
3          3           3         1

我想重新排序每个列表中的项目以显示如下内容:

$name1
[1] "bar"    "foo"    "potato"

$name2
[1] 4 1 2

$name3
# A tibble: 3 x 3
  middle_name first_name last_name
        <dbl>      <dbl>     <dbl>
1          34          1         3
2           5          2         9
3           3          3         1

我尝试使用索引编写不同的新订单,但我只是设法杀了我的列表。

感谢。

1 个答案:

答案 0 :(得分:2)

我们可以做到

lapply(my_lists, function(x) if(is.vector(x)) sort(x) else 
         x  %>%
             select(sort(names(.), decreasing = TRUE)))

如果是自定义订单

lapply(my_lists, `[`, c(3, 2, 1))