2017-10-26 4 views
-1

は、ここで私が使用している関数の出力は次のようなものですいくつかのものをループすることによって。基本的に、これは私のループ機能である:複数のリストは、だから私は、パッケージを実行している

for (k in 1:length(models)) { 
    for (l in 1:length(patients)) { 
     print(result[[l]][[k]]) 
     tableData[[l]][[k]] <- do.call(rbind, result[[l]][[k]]) 
    } 
} 

のでprint(result[[l]][[k]])は、私が最初にお見せした出力を提供します。だから私の問題は、これらすべてを1つのデータフレームに入れることです。これまでのところうまくいきません。すなわち、リストをデータフレームに結合するときに私が読んだのはdo.callです。

ここでどこが間違っていますか?

dput()出力(ここでは面積=値):

list(list(structure(list(value = 0.0394797760472196, ID = "1 house", 
    structure = "house", model = structure(1L, .Label = "wood", class = "factor")), .Names = c("value", 
"ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame"), 
    structure(list(value = 0.0394797760472196, ID = "1 house", 
     structure = "house", model = structure(1L, .Label = "stone", class = "factor")), .Names = c("value", 
    "ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame")), 
    list(structure(list(value = 0.0306923865158472, ID = "2 house", 
     structure = "house", model = structure(1L, .Label = "wood", class = "factor")), .Names = c("value", 
    "ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame"), 
     structure(list(value = 0.0306923865158472, ID = "2 house", 
      structure = "house", model = structure(1L, .Label = "stone", class = "factor")), .Names = c("value", 
     "ID", "structure", "model"), row.names = c(NA, -1L 
     ), class = "data.frame"))) 
list(list(structure(list(value = 0.0394797760472196, ID = "1 house", 
    structure = "house", model = structure(1L, .Label = "wood", class = "factor")), .Names = c("value", 
"ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame"), 
    structure(list(value = 0.0394797760472196, ID = "1 house", 
     structure = "house", model = structure(1L, .Label = "stone", class = "factor")), .Names = c("value", 
    "ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame")), 
    list(structure(list(value = 0.0306923865158472, ID = "2 house", 
     structure = "house", model = structure(1L, .Label = "wood", class = "factor")), .Names = c("value", 
    "ID", "structure", "model"), row.names = c(NA, -1L), class = "data.frame"), 
     structure(list(value = 0.0306923865158472, ID = "2 house", 
      structure = "house", model = structure(1L, .Label = "stone", class = "factor")), .Names = c("value", 
     "ID", "structure", "model"), row.names = c(NA, -1L 
     ), class = "data.frame"))) 
+0

あなたのオブジェクト* result *を 'dput()'し、ここで私たちがどのように作業するのか知っている投稿を投稿してください。これにより、オブジェクトを再作成することができます。 * result *が非常に大きい場合は、 'head()': 'dput(head(result))'を使用してください。 – Parfait

+0

あなたのオブジェクトが何であるかを理解することは非常に難しいので、私は同意します... str(結果)とstr(テーブルデータ)を – user3507085

+0

にしてください申し訳ありません。私は今OPをdput()出力で更新しました。 –

答えて

2

編集:私は最初にこの問題を解決するためpurrr::map_dfrを使用するが、purrr::reduceははるかに適切である

更新します。

リストネストは、行を2回まとめてバインドする必要があることを意味します。私はdo.callより直感的な方法でpurrrマップ-INGの見つけ


library(purrr) 
library(dplyr) 

my_df <- reduce(my_list, bind_rows) 
#> Warning in bind_rows_(x, .id): Unequal factor levels: coercing to character 
#> Warning in bind_rows_(x, .id): binding character and factor vector, 
#> coercing into character vector 

#> Warning in bind_rows_(x, .id): binding character and factor vector, 
#> coercing into character vector 
#> Warning in bind_rows_(x, .id): Unequal factor levels: coercing to character 
#> Warning in bind_rows_(x, .id): binding character and factor vector, 
#> coercing into character vector 

#> Warning in bind_rows_(x, .id): binding character and factor vector, 
#> coercing into character vector 
my_df 
#>  value  ID structure model 
#> 1 0.03947978 1 house  house wood 
#> 2 0.03947978 1 house  house stone 
#> 3 0.03069239 2 house  house wood 
#> 4 0.03069239 2 house  house stone 

:ここpurrrdplyrパッケージを使用して、変数my_listにごdputリストを割り当てるソリューションです。これが役に立ったら教えてください!

+0

これは優れています。私が自分自身を思いつくはずのものよりもはるかにクリーンです。エラーを無視するだけでいいですか、それとも何かできますか? :) –

+0

警告は文字列を要因とするデータフレームからのものです。これらの要因をあらかじめ文字に変換しておくと、これらの警告を避けることができます – zlipp

+0

それはさらに優れています...ありがとうございます。 –

関連する問題