如果它们具有相同的列,则合并 tibble 表的列表
Combine list of tibble tables if they have the same columns
我有表格的数据
[[1]]
a b c
1 3 4 8
[[2]]
d e f
1 6 7 9
[[3]]
g h i
1 1 4 5
[[4]]
a b c
1 9 5 2
[[5]]
d e f
1 5 8 0
我想把这个合并到
[[1]]
a b c
1 3 4 8
2 9 5 2
[[1]]
d e f
1 6 7 9
2 5 8 0
[[3]]
g h i
1 1 4 5
也就是说,如果 tibble 表具有相同的列名,我想将它们绑定到列表中。有人可以帮帮我吗?亲切的问候。
一个选项可以是:
lapply(split(lst, sapply(lst, function(x) toString(names(x)))), function(y) do.call(rbind, y))
$`a, b, c`
a b c
[1,] 3 4 8
[2,] 9 5 2
$`d, e, f`
d e f
[1,] 6 7 9
[2,] 5 8 0
$`g, h, i`
g h i
[1,] 1 4 5
或更简洁的选项(由@Ronak Shah 提出):
tapply(lst, sapply(lst, function(x) toString(names(x))), function(x) do.call(rbind, x))
它很乱,但它可能有效
x <- unique(lapply(dummy, function(x) names(x)))
y <- lapply(dummy, function(x) names(x))
z <- match(y, x)
res <- vector(mode = "list", length = 3)
for (i in 1:length(z)) {
res[[z[i]]] <- rbind(res[[z[i]]], dummy[[i]])
}
[[1]]
a b c
[1,] 3 4 8
[2,] 9 5 2
[[2]]
d e f
[1,] 6 7 9
[2,] 5 8 0
[[3]]
g h i
[1,] 1 4 5
我有表格的数据
[[1]]
a b c
1 3 4 8
[[2]]
d e f
1 6 7 9
[[3]]
g h i
1 1 4 5
[[4]]
a b c
1 9 5 2
[[5]]
d e f
1 5 8 0
我想把这个合并到
[[1]]
a b c
1 3 4 8
2 9 5 2
[[1]]
d e f
1 6 7 9
2 5 8 0
[[3]]
g h i
1 1 4 5
也就是说,如果 tibble 表具有相同的列名,我想将它们绑定到列表中。有人可以帮帮我吗?亲切的问候。
一个选项可以是:
lapply(split(lst, sapply(lst, function(x) toString(names(x)))), function(y) do.call(rbind, y))
$`a, b, c`
a b c
[1,] 3 4 8
[2,] 9 5 2
$`d, e, f`
d e f
[1,] 6 7 9
[2,] 5 8 0
$`g, h, i`
g h i
[1,] 1 4 5
或更简洁的选项(由@Ronak Shah 提出):
tapply(lst, sapply(lst, function(x) toString(names(x))), function(x) do.call(rbind, x))
它很乱,但它可能有效
x <- unique(lapply(dummy, function(x) names(x)))
y <- lapply(dummy, function(x) names(x))
z <- match(y, x)
res <- vector(mode = "list", length = 3)
for (i in 1:length(z)) {
res[[z[i]]] <- rbind(res[[z[i]]], dummy[[i]])
}
[[1]]
a b c
[1,] 3 4 8
[2,] 9 5 2
[[2]]
d e f
[1,] 6 7 9
[2,] 5 8 0
[[3]]
g h i
[1,] 1 4 5