2017-05-17 12 views
2

長さの異なる複数のデータフレームがあり、それぞれのデータフレームにそれぞれのデータフレームがある定数を含む変数を追加しようとしていますそのリストから別のエントリが割り当てられました。リストから変数として複数のデータフレームに異なる値を追加する方法R

どのようにループやlapplyを使用してこれを自動化できますか?それは、リストからすべてのエントリを貼り付けて、明らかに以下の私の哀れな試みは、望ましい結果を与えるものではありません:

A = data.frame(v=c('x','x','y','y','z','z')) 
B = data.frame(v=c('x','y','z')) 
C = data.frame(v=c('x','x','x','y','y','y','z','z','z')) 

Mylist = list('a','b','c') 

# desired result: 
A$new <- Mylist[1] 
B$new <- Mylist[2] 
C$new <- Mylist[3] 

# failed attempt to use lapply: 
dfs <- lapply(list(A, B, C), function(d) { 
     d$new1 <- Mylist 
     d 
     }) 

をこれは私が手に出力されます:

> dfs 
[[1]] 
    v new new1 
1 x a a 
2 x a b 
3 y a c 
4 y a a 
5 z a b 
6 z a c 

[[2]] 
    v new new1 
1 x b a 
2 y b b 
3 z b c 

[[3]] 
    v new new1 
1 x c a 
2 x c b 
3 x c c 
4 y c a 
5 y c b 
6 y c c 
7 z c a 
8 z c b 
9 z c c 

すべてのヘルプは非常に高く評価されるだろう。

+1

あなたがサンプル出力を提供してくださいだろうか? – akash87

+0

は、あなたが望むアウトプットかそれともあなたが得るのでしょうか? – akash87

+0

変数 "new"は私が手に入れたいときに得たいものです。変数 "new1"はlapplyを使って自動化しようとして失敗した結果です。 – Luise

答えて

2

チェックこれが動作するかどうか:

df_list <- list(A, B, C) 

dfs <- lapply(seq_along(df_list), function(i) { 
    df_list[[i]] <- cbind(df_list[[i]], Mylist[[i]]) 
}) 
+0

完璧、ありがとう! – Luise

+0

'apply'ファミリは常に私をたくさん混乱させます。これで解決策を直接見つけることは本当に難しいです。 – TheBiro

+0

適用しないでこれをどのように解決しますか?私もループを使ってみましたが、どちらもうまく動作しませんでした。また、ループを使用することは専門家のソリューションを適用するのに劣っていると考えられていました。 – Luise

関連する問題