2016-07-13 21 views
1

同じ数のデータフレームのリストが2つ(1つ以上)あり、異なるリストのデータフレームを1つのリストにまとめる必要があります。出力として、個々のリストと同じ数のデータフレームの単一のリストを取得したいと考えています。異なるリストのデータフレームを1つのリストにまとめる

少し複雑に聞こえるが、基本的に私は、拡張可能かつ簡単な方法でこれをしたい:

d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6)) 
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4)) 
l1 <- list(d1,d2) 
d3 <- data.frame(y1=c(11,22,33),y2=c(44,55,66)) 
d4 <- data.frame(y1=c(33,22,11),y2=c(66,55,44)) 
l2 <- list(d3,d4) 

new_d1 <- do.call(rbind,list(l1[[1]],l2[[1]])) 
new_d2 <- do.call(rbind,list(l1[[2]],l2[[2]])) 
output <- list(new_d1,new_d2) 

出力がより次のようになります。

> output 
[[1]] 
y1 y2 
1 1 4 
2 2 5 
3 3 6 
4 11 44 
5 22 55 
6 33 66 

[[2]] 
y1 y2 
1 3 6 
2 2 5 
3 1 4 
4 33 66 
5 22 55 
6 11 44 

また、缶をどの機能l1とl2が既にリストに載っている場合は使用しますか?

私は既にlapply()sapply()を見ていますが、どちらの機能も実際には適合しません。フォーラムでは、単一のデータフレームでデータフレームのリストを結合するソリューションしか見つけません。

+2

'Map(rbind、l1、l2)'? –

+0

@docendodiscimus asnwerとして投稿し、これを閉じてください。 – akrun

+0

私はそれを@akrunに任せます。あなたの答えを自由に元に戻してください。あなたが 'Map'を追加しても構いません。私はそれがとにかく重複していると信じています –

答えて

3
l1の単純なケースで

l2地球環境にリストされて、あなたは他のケースでは

Map(rbind, l1, l2) 

を使用することができますl1l2が既にlistに座っているとき、あなたは

を使用することができます
l <- list(l1, l2) 
Reduce(function(...) Map(rbind, ...), l) 
+0

魅力のように動作します! – moremo

関連する問題