gpt4 book ai didi

r - tidyverse:绑定(bind)相同维度的列表元素

转载 作者:行者123 更新时间:2023-12-04 11:09:40 24 4
gpt4 key购买 nike

使用 reduce(bind_cols) ,相同维度的列表元素可以组合。但是,我想知道如何从可能具有不同维度元素的列表中仅组合相同维度(可能以某种方式指定维度)的元素。

library(tidyverse)

df1 <- data.frame(A1 = 1:10, A2 = 10:1)
df2 <- data.frame(B = 11:30)
df3 <- data.frame(C = 31:40)

ls1 <- list(df1, df3)
ls1

[[1]]
A1 A2
1 1 10
2 2 9
3 3 8
4 4 7
5 5 6
6 6 5
7 7 4
8 8 3
9 9 2
10 10 1

[[2]]
C
1 31
2 32
3 33
4 34
5 35
6 36
7 37
8 38
9 39
10 40

ls1 %>%
reduce(bind_cols)

A1 A2 C
1 1 10 31
2 2 9 32
3 3 8 33
4 4 7 34
5 5 6 35
6 6 5 36
7 7 4 37
8 8 3 38
9 9 2 39
10 10 1 40

ls2 <- list(df1, df2, df3)
ls2

[[1]]
A1 A2
1 1 10
2 2 9
3 3 8
4 4 7
5 5 6
6 6 5
7 7 4
8 8 3
9 9 2
10 10 1

[[2]]
B
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 20
11 21
12 22
13 23
14 24
15 25
16 26
17 27
18 28
19 29
20 30

[[3]]
C
1 31
2 32
3 33
4 34
5 35
6 36
7 37
8 38
9 39
10 40


ls2 %>%
reduce(bind_cols)

Error: Can't recycle `..1` (size 10) to match `..2` (size 20).
Run `rlang::last_error()` to see where the error occurred.
问题
寻找一个函数来组合所有 data.frames在带有行数参数的列表中。

最佳答案

一种选择可能是:

map(split(lst, map_int(lst, NROW)), bind_cols)

$`10`
A1 A2 C
1 1 10 31
2 2 9 32
3 3 8 33
4 4 7 34
5 5 6 35
6 6 5 36
7 7 4 37
8 8 3 38
9 9 2 39
10 10 1 40

$`20`
B
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 20
11 21
12 22
13 23
14 24
15 25
16 26
17 27
18 28
19 29
20 30

关于r - tidyverse:绑定(bind)相同维度的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67888040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com