2016-07-29 4 views
3

私は、data.frameオブジェクトのセットを含むネストされたリストを持っています。私はunlistメソッドのような最も一般的なアプローチを使用しましたが、それは私のリストを適切に太っていません、出力はうまく表現されませんでした。これをより効率的に行うにはどうすればよいですか?誰もがこの操作を行うのを知っていますか?ありがとう。unlistメソッドを使用する代わりに、ネストされたリストを1つのリストにより効率的にフラット化する方法はありますか?

例:私はこのような試みた

mylist <- list(pass=list(Alpha.df1_yes=airquality[2:4,], Alpha.df2_yes=airquality[3:6,],Alpha.df3_yes=airquality[2:5,],Alpha.df4_yes=airquality[7:9,]), 
      fail=list(Alpha.df1_no=airquality[5:7,], Alpha.df2_no=airquality[8:10,], Alpha.df3_no=airquality[13:16,],Alpha.df4_no=airquality[11:13,])) 

、それは動作しますが、出力が適切に配置されていませんでした。

res <- lapply(mylist, unlist) 

平ら後、私は重複せずにそれらをマージしたいと思っ:

out <- lapply(res, rbind.data.frame) 

私の所望の出力:出力がより互換性表現平らこの種を作ることができますどのように

mylist[[1]]$pass: 
    Ozone Solar.R Wind Temp Month Day 
2 36  118 8.0 72  5 2 
3 12  149 12.6 74  5 3 
4 18  313 11.5 62  5 4 

?誰でもRでこれを行うことができますか?どうもありがとう。

+0

(do.call 'のようなものをrbind、unlist(mylist、FALSE)) '? –

答えて

4

lapply使用し、重複:私たちはなしリストを1つのデータフレーム内のすべてを維持したい場合は

res <- lapply(mylist, function(i){ 
    x <- do.call(rbind, i) 
    x[ !duplicated(x), ] 
    rownames(x) <- NULL 
    x 
}) 

res$pass 
# Ozone Solar.R Wind Temp Month Day 
# 1  36  118 8.0 72  5 2 
# 2  12  149 12.6 74  5 3 
# 3  18  313 11.5 62  5 4 
# 4  12  149 12.6 74  5 3 
# 5  18  313 11.5 62  5 4 
# 6  NA  NA 14.3 56  5 5 
# 7  28  NA 14.9 66  5 6 
# 8  36  118 8.0 72  5 2 
# 9  12  149 12.6 74  5 3 
# 10 18  313 11.5 62  5 4 
# 11 NA  NA 14.3 56  5 5 
# 12 23  299 8.6 65  5 7 
# 13 19  99 13.8 59  5 8 
# 14  8  19 20.1 61  5 9 

以上はまだ、その後、リストを返します:

res <- do.call(rbind, unlist(mylist, recursive = FALSE)) 
res <- res[!duplicated(res), ] 
res 
#      Ozone Solar.R Wind Temp Month Day 
# pass.Alpha.df1_yes.2 36  118 8.0 72  5 2 
# pass.Alpha.df1_yes.3 12  149 12.6 74  5 3 
# pass.Alpha.df1_yes.4 18  313 11.5 62  5 4 
# pass.Alpha.df2_yes.5 NA  NA 14.3 56  5 5 
# pass.Alpha.df2_yes.6 28  NA 14.9 66  5 6 
# pass.Alpha.df4_yes.7 23  299 8.6 65  5 7 
# pass.Alpha.df4_yes.8 19  99 13.8 59  5 8 
# pass.Alpha.df4_yes.9  8  19 20.1 61  5 9 
# fail.Alpha.df2_no.10 NA  194 8.6 69  5 10 
# fail.Alpha.df3_no.13 11  290 9.2 66  5 13 
# fail.Alpha.df3_no.14 14  274 10.9 68  5 14 
# fail.Alpha.df3_no.15 18  65 13.2 58  5 15 
# fail.Alpha.df3_no.16 14  334 11.5 64  5 16 
# fail.Alpha.df4_no.11  7  NA 6.9 74  5 11 
# fail.Alpha.df4_no.12 16  256 9.7 69  5 12 
関連する問題