元素的rbind rbind rbind列表r

发布于 2025-02-01 23:48:11 字数 1007 浏览 3 评论 0原文

我有一个3个列表的列表,每个列表具有相等数量的数据范围,即32,我希望在列表元素上rbind它们。为了举一个更简单的示例,假设您有一个带有2个列表的列表,每个列表都有2个数据范围,例如:

[[1]]
[[1]][[1]]
  x  y
1 a 11
2 b 12
3 c 13

[[1]][[2]]
  x  y
1 a 14
2 b 15
3 c 16


[[2]]
[[2]][[1]]
  x  y
1 a 17
2 b 18
3 c 19

[[2]][[2]]
  x  y
1 a 21
2 b 22
3 c 23

给出:

A <- data.frame(c("a","b","c"), c(11,12,13))
colnames(A)<-c("x","y")
B <- data.frame(c("a","b","c"), c(14,15,16))
colnames(B)<-c("x","y")
C <- data.frame(c("a","b","c"), c(17,18,19))
colnames(C)<-c("x","y")
D <- data.frame(c("a","b","c"), c(21,21,23))
colnames(D)<-c("x","y")
L1 <- list(A,B)
L2 <- list(C,D)
L <- list(L1,L2)

我如何rbind在2个列表元素上的数据范围,以便最终输出是:

[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23

在此示例中,我可以output&lt; - list(rbind(a,c),rbind(b,d))

但我想做它适用于更大的数据范围列表

I have a list of 3 lists, each with an equal number of dataframes, 32, to be precise, and I wish to rbind them across the lists element-wise. To give a simpler example, suppose you have one list with 2 lists, each with 2 dataframes, like this:

[[1]]
[[1]][[1]]
  x  y
1 a 11
2 b 12
3 c 13

[[1]][[2]]
  x  y
1 a 14
2 b 15
3 c 16


[[2]]
[[2]][[1]]
  x  y
1 a 17
2 b 18
3 c 19

[[2]][[2]]
  x  y
1 a 21
2 b 22
3 c 23

given by:

A <- data.frame(c("a","b","c"), c(11,12,13))
colnames(A)<-c("x","y")
B <- data.frame(c("a","b","c"), c(14,15,16))
colnames(B)<-c("x","y")
C <- data.frame(c("a","b","c"), c(17,18,19))
colnames(C)<-c("x","y")
D <- data.frame(c("a","b","c"), c(21,21,23))
colnames(D)<-c("x","y")
L1 <- list(A,B)
L2 <- list(C,D)
L <- list(L1,L2)

How can I rbind the dataframes across the 2 lists element-wise, such that the final output is:

[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23

In this example, I could just output <- list(rbind(A,C),rbind(B,D))

But I want to do it for a much larger list of lists of dataframes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

睡美人的小仙女 2025-02-08 23:48:11

怎么样:

A <- data.frame(c("a","b","c"), c(11,12,13))
colnames(A)<-c("x","y")
B <- data.frame(c("a","b","c"), c(14,15,16))
colnames(B)<-c("x","y")
C <- data.frame(c("a","b","c"), c(17,18,19))
colnames(C)<-c("x","y")
D <- data.frame(c("a","b","c"), c(21,21,23))
colnames(D)<-c("x","y")
L1 <- list(A,B)
L2 <- list(C,D)
L <- list(L1,L2)
lapply(1:2, \(i)rbind(L1[[i]], L2[[i]]))
#> [[1]]
#>   x  y
#> 1 a 11
#> 2 b 12
#> 3 c 13
#> 4 a 17
#> 5 b 18
#> 6 c 19
#> 
#> [[2]]
#>   x  y
#> 1 a 14
#> 2 b 15
#> 3 c 16
#> 4 a 21
#> 5 b 21
#> 6 c 23

How about this:

A <- data.frame(c("a","b","c"), c(11,12,13))
colnames(A)<-c("x","y")
B <- data.frame(c("a","b","c"), c(14,15,16))
colnames(B)<-c("x","y")
C <- data.frame(c("a","b","c"), c(17,18,19))
colnames(C)<-c("x","y")
D <- data.frame(c("a","b","c"), c(21,21,23))
colnames(D)<-c("x","y")
L1 <- list(A,B)
L2 <- list(C,D)
L <- list(L1,L2)
lapply(1:2, \(i)rbind(L1[[i]], L2[[i]]))
#> [[1]]
#>   x  y
#> 1 a 11
#> 2 b 12
#> 3 c 13
#> 4 a 17
#> 5 b 18
#> 6 c 19
#> 
#> [[2]]
#>   x  y
#> 1 a 14
#> 2 b 15
#> 3 c 16
#> 4 a 21
#> 5 b 21
#> 6 c 23

Created on 2022-05-26 by the reprex package (v2.0.1)

醉城メ夜风 2025-02-08 23:48:11

一个人可以从purrr中使用transpose

output <- lapply(purrr::transpose(L), 
                 function(l) do.call(rbind, args = l))
output

One could just use transpose from purrr:

output <- lapply(purrr::transpose(L), 
                 function(l) do.call(rbind, args = l))
output
烟燃烟灭 2025-02-08 23:48:11

您可以使用map2这样:

library(purrr)
map2(L1,L2,rbind)

输出:

[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23

You can use map2 like this:

library(purrr)
map2(L1,L2,rbind)

Output:

[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23
从来不烧饼 2025-02-08 23:48:11

基础r:

Map(rbind, L1, L2)
[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23

Base R:

Map(rbind, L1, L2)
[[1]]
  x  y
1 a 11
2 b 12
3 c 13
4 a 17
5 b 18
6 c 19

[[2]]
  x  y
1 a 14
2 b 15
3 c 16
4 a 21
5 b 21
6 c 23
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文