2016-10-14 9 views
-1

私は合計で6つのリスト(l1l2l3l4l5l6)を持っており、各リストには、私は12個のデータフレーム(df1df2df3、...、df10df11df12)を持っています。私はすべてのリストを分割したいと思います。これは私が試みたものです。データフレームを含むリストを個々のデータフレームに分割するにはどうすればよいですか?

split_df<-function(list){ 
for (i in 1:length(list)){ 
assign(paste0("df",i),list[[i]])} 
} 

これは、forループのみを使用する場合にのみ機能します。しかし、それは機能で動作しません。

l1<-list(data.frame(matrix(1:10,nrow=2)),data.frame(matrix(1:4,nrow=2))) 
split_df(l1) 
df1 
Error: object 'df1' not found 
df2 
Error: object 'df2' not found 

しかし、機能のない

は:

for (i in 1:length(l1)){ 
assign(paste0("df",i),l1[[i]])} 

df1 
# X1 X2 X3 X4 X5 
# 1 1 3 5 7 9 
# 2 2 4 6 8 10 
df2 
# X1 X2 
# 1 1 3 
# 2 2 4 

どのように私はこれを是正ん

は、L1、のは、以下のリストを見てみましょうか?

+0

'list2env(mylst、.GlobalEnv)'を試したことがありますか? – lukeA

+0

@lukeA私は 'list2env(l1、.GlobalEnv)'を試みました。これは 'list2env(l1、.GlobalEnv)のエラーを返します。 名前(x)はxと同じ長さの文字ベクトルでなければなりません。 – HNSKD

+0

答えはここです、http://stackoverflow.com/questions/12215032/use-複数のデータフレームへのループからスプリットへのリスト@ptocquinの答えを見て、あなたが望むものだと思う。 – user1945827

答えて

2

を行うことができます。関数内では、data.framedf1df2を作成します。これらをグローバル環境に割り当てることができます。

split_df<-function(list){ 
    for (i in 1:length(list)){ 
    assign(paste0("df",i), list[[i]], envir = .GlobalEnv) 
    } 
} 
+0

うわー。ありがとう! – HNSKD

1

あなたがローカルに割り当てる使用

l1<-list(data.frame(matrix(1:10,nrow=2)),data.frame(matrix(1:4,nrow=2))) 
names(l1) <- paste0("df", seq_along(l1)) 
list2env(l1, .GlobalEnv) 
関連する問題