重新排序列表列表中的元素
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))
我有一个列表的列表,并且有相同数量的对象,像这样:
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))