如何cbind和rbind 2个数据帧列表

Thu*_*Tra 1 r rbind cbind

我有2个数据帧列表.每个列表有24个数据帧

list1 <- (data1, data2, ..., data24)
list2 <- (result1, result2, ...., result3)
Run Code Online (Sandbox Code Playgroud)

我想cbind data1result1,data2result2等.然后将rbin所有数据帧组合在一起:

all1 <- cbind(data1, result1)
all2 <- cbind(data2, result2)
all.in <- rbind(all1, all2)
Run Code Online (Sandbox Code Playgroud)

如何有效地使用24个数据帧?

ali*_*ire 7

在tidyverse语法,dplyr::bind_rows并且bind_cols将列表绑定在一起,并通过调用purrr::map_df变种:

library(tidyverse)

l1 <- list(mtcars[1:2, 1, drop = FALSE], mtcars[3:4, 1, drop = FALSE])
l2 <- list(mtcars[1:2, 2:6], mtcars[3:4, 2:6])

map2_dfr(l1, l2, bind_cols)
#>    mpg cyl disp  hp drat    wt
#> 1 21.0   6  160 110 3.90 2.620
#> 2 21.0   6  160 110 3.90 2.875
#> 3 22.8   4  108  93 3.85 2.320
#> 4 21.4   6  258 110 3.08 3.215
Run Code Online (Sandbox Code Playgroud)

一个.id参数可以被传递到两个bind_rowsmap_dfr,并且将导致新的一列的名称提供由用于哪个列表元素中的每个观测从传来的索引.


jor*_*ran 5

我可能会这样做:

l1 <- list(mtcars,mtcars)
l2 <- list(mtcars,mtcars)
do.call(rbind,mapply(FUN = cbind,l1,l2,SIMPLIFY = FALSE))
Run Code Online (Sandbox Code Playgroud)

如果数据帧是非常大的,你可以切换到dplyr或data.table等价物cbindrbind.

  • `do.call(rbind,地图(cbind,L1,L2))` (2认同)