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

Reorder elements in a list of lists

我有一个列表的列表,并且有相同数量的对象,像这样:

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

我尝试过使用索引分配新订单,但我只能设法取消我的列表。

谢谢。

我们可以做到

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))