2017-12-24 4 views
0

私は2つのデータフレームのリストを持っています。各リストは24個のデータフレームcbindとrbindする方法2データフレームのリスト

list1 <- (data1, data2, ..., data24) 
list2 <- (result1, result2, ...., result3) 

私が欲しいを持っているようにresult2としてresult1cbinddata1data2へ。その後rbin Dそのよう一緒にすべてのデータフレーム:

all1 <- cbind(data1, result1) 
all2 <- cbind(data2, result2) 
all.in <- rbind(all1, all2) 

24のデータフレームを効率的にそれを行うにはどのように?

答えて

4

私はおそらくこのような何かをするだろう:

l1 <- list(mtcars,mtcars) 
l2 <- list(mtcars,mtcars) 
do.call(rbind,mapply(FUN = cbind,l1,l2,SIMPLIFY = FALSE)) 

データフレームが非常に大きい場合は、dplyrまたはcbindrbindのdata.table同等に切り替えるかもしれません。 tidyverse文法で

+0

の代わりに、 'mapply'を使用して? – Onyambu

+1

'do.call(rbind、Map(cbind、l1、l2))' – Onyambu

+0

@Onyambu私は古い学校なので、その理由があります。 ;) – joran

2

dplyr::bind_rowsbind_colsは一緒にリストを結合し、purrr::map_df変種によって呼び出されます: `Map`を使用しない理由は、`簡素化= false`を持つ

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 
関連する問題