2017-12-10 12 views
0

私はデータフレームのリストの2つの別々のリストを扱っています。それらはまったく同じ寸法です。私は各データフレーム(リストのリストにある)を(リストの他のリストにある)他のデータフレームと結合しようとしています。私は、マッフルとサプリの組み合わせを使用する必要があると信じていますが、私はそれを理解できません。ここに私がこれまで持っているものがあります:リストの2つのリストを列方向に組み合わせるR

mapply(function(x,y) { sapply(cbind) }, x = e06_bl, Y = e06_cos) 

以下は私が働いているものに似たいくつかのサンプルデータを提供します。 list1list2は私が取り組んでいるものです。 desired_listは私が達成したいことです。

df1_subA <- data.frame(sub = rep(1,3), val1 = round(rnorm(1:3),3)) 
df2_subA <- data.frame(sub = rep(1,5), val1 = round(rnorm(1:5),3)) 
df1_subB <- data.frame(sub = rep(2, 3), val1 = round(rnorm(1:3),3)) 
df2_subB <- data.frame(sub = rep(2,6), val1 = round(rnorm(1:6),3)) 

vec1_subA <-sample(3) 
vec2_subA <- sample(5) 
vec1_subB <- sample(3) 
vec2_subB <- sample(6) 

list1 <- list(list(df1_subA, df2_subA), list(df1_subB, df2_subB)) 
list2 <- list(list(vec1_subA, vec2_subA), list(vec1_subB, vec2_subB)) 
desired_list <- list(list(cbind(df1_subA, val2 = vec1_subA), cbind(df2_subA, val2 = vec2_subA)), list(cbind(df1_subB, val2 = vec1_subB), cbind(df2_subB, val2 = vec2_subB))) 
+2

私に知らせてくれてありがとう。私はこのコミュニティにはかなり新しく、あまりにも多くの質問をしていません。うまくいけば、これは事を明確にするのに役立ちます。 @ d.b –

答えて

2
lapply(X = 1:length(list1), FUN = function(i) 
    lapply(X = 1:length(list1[[i]]), FUN = function(j) data.frame(list1[[i]][[j]], val2 = list2[[i]][[j]]))) 
# [[1]] 
# [[1]][[1]] 
    # sub val1 val2 
# 1 1 1.817 2 
# 2 1 1.642 1 
# 3 1 -0.007 3 

# [[1]][[2]] 
    # sub val1 val2 
# 1 1 0.314 3 
# 2 1 1.527 4 
# 3 1 0.327 5 
# 4 1 -0.527 2 
# 5 1 -0.151 1 


# [[2]] 
# [[2]][[1]] 
    # sub val1 val2 
# 1 2 -1.694 3 
# 2 2 -1.595 2 
# 3 2 0.442 1 

# [[2]][[2]] 
    # sub val1 val2 
# 1 2 -0.773 2 
# 2 2 -0.185 5 
# 3 2 0.233 6 
# 4 2 1.515 4 
# 5 2 0.980 1 
# 6 2 2.422 3 
+2

正確に表す 'X = 1:2'とは何ですか?この問題は、ネストされた各リストにちょうど2つのデータフレームが含まれているとは想定できません。その変数がハードコードされていない場所を編集する方法はありますか? –

関連する問題