[英]How to cbind and rbind 2 lists of dataframes
我有2個數據框列表。 每個列表都有24個數據框
list1 <- (data1, data2, ..., data24)
list2 <- (result1, result2, ...., result3)
我想將data1
與result1
cbind
,將data2
與result2
cbind
,依此類推。 然后像這樣將所有數據幀rbin
在一起:
all1 <- cbind(data1, result1)
all2 <- cbind(data2, result2)
all.in <- rbind(all1, all2)
如何使用24個數據幀有效地做到這一點?
在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
可以將.id
參數傳遞給bind_rows
和map_dfr
,並將產生一個新列,其名稱由提供的索引組成,該索引包含每個觀察值所來自的列表元素。
我可能會做這樣的事情:
l1 <- list(mtcars,mtcars)
l2 <- list(mtcars,mtcars)
do.call(rbind,mapply(FUN = cbind,l1,l2,SIMPLIFY = FALSE))
如果數據幀很大,則可以切換到dplyr或等效於cbind
和rbind
的cbind
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.