【问题标题】:Reorder elements in a list of lists重新排序列表列表中的元素
【发布时间】:2018-05-08 11:26:29
【问题描述】:

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

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(i) i[c(2, 1, 3)])吗?

标签: r list reorderlist


【解决方案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))

【讨论】:

  • 是否可以指定排序顺序,即 c(1,2,3) 或 c(3,2,1)?
  • 太棒了,完美运行。我将不得不阅读'['。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2016-01-20
  • 2011-03-04
  • 1970-01-01
  • 2023-01-27
  • 2017-06-13
相关资源
最近更新 更多