66

既にリスト形式になっているリストにデータを追加する際に問題が発生しています。シミュレーション ループ中に結果オブジェクトをエクスポートするプログラムがあります。データ自体は行列のリストとして保存されます。私の考えは、これらのリストをリストに保存し、このリストのリストを後で分析するためにRオブジェクトとして保存することですが、これを正しく達成するためにいくつかの問題があります。シミュレーションの行列データの代わりに値を使用するだけの小さな抽象的な例で、私が行ったことを示します。

シミュレーション ループを 3 回実行したとします。反復中に、結果リストを収集して、R オブジェクトとして保存するリストの 1 つのリストにする必要があります。

他のリストを含めて保存するリスト: outlist1 <- list()

最初の反復: resultsa <- list(1,2,3,4,5)

outlist <- append(outlist1,resultsa)

2 回目の反復: resultsb <- list(6,7,8,9,10)

outlist <- append(outlist1,b)

3 回目の反復: resultsc <- list(11,12,13,14,15)

outlist <- list(outlist2,c)

ただし、この解決策は、この方法でリストを含むリストを拡張することでは機能しません。望ましい結果は次のとおりです。

>outlist
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2

[[1]][[3]]
[1] 3

[[1]][[4]]
[1] 4

[[1]][[5]]
[1] 5


[[2]]
[[2]][[1]]
[1] 6

[[2]][[2]]
[1] 7

[[2]][[3]]
[1] 8

[[2]][[4]]
[1] 9

[[2]][[5]]
[1] 10


[[3]]
[[3]][[1]]
[1] 11

[[3]][[2]]
[1] 12

[[3]][[3]]
[1] 13

[[3]][[4]]
[1] 14

[[3]][[5]]
[1] 15

ただし、代わりに次のようになります。

> outlist3
[[1]]
[[1]][[1]]
[[1]][[1]][[1]]
[1] 1

[[1]][[1]][[2]]
[1] 2

[[1]][[1]][[3]]
[1] 3

[[1]][[1]][[4]]
[1] 4

[[1]][[1]][[5]]
[1] 5


[[1]][[2]]
[[1]][[2]][[1]]
[1] 6

[[1]][[2]][[2]]
[1] 7

[[1]][[2]][[3]]
[1] 8

[[1]][[2]][[4]]
[1] 9

[[1]][[2]][[5]]
[1] 10

フォーマットされた結果のリストが目的の結果のようになるように、リストを拡張するにはどうすればよいですか? これらのリストをさらに分析する場合、要素に簡単にアクセスできる必要があります。

4

7 に答える 7

84

これは、あなたが持ちたいものですか:

# Initial list:
myList <- list()

# Now the new experiments
for(i in 1:3){
  myList[[length(myList)+1]] <- list(sample(1:3))
}

myList
于 2013-02-13T07:12:57.167 に答える
24
outlist <- list(resultsa)
outlist[2] <- list(resultsb)
outlist[3] <- list(resultsc)

appendのヘルプ ファイルには、ベクター用であると書かれています。でもここは使える。以前に試したことがあると思いましたが、OPのコードに奇妙な異常があり、誤解を招く可能性があります。

outlist <- list(resultsa)
outlist <- append(outlist,list(resultsb))
outlist <- append(outlist,list(resultsc))

同じ結果です。

于 2013-02-13T07:56:11.673 に答える
15

リストの最後を1つ過ぎたインデックスに割り当てることを含む他の2つのソリューションがあります。を使用するソリューションを次に示しますappend

resultsa <- list(1,2,3,4,5)
resultsb <- list(6,7,8,9,10)
resultsc <- list(11,12,13,14,15)

outlist <- list(resultsa)
outlist <- append(outlist, list(resultsb))
outlist <- append(outlist, list(resultsc))

要求された形式を提供します

> str(outlist)
List of 3
 $ :List of 5
  ..$ : num 1
  ..$ : num 2
  ..$ : num 3
  ..$ : num 4
  ..$ : num 5
 $ :List of 5
  ..$ : num 6
  ..$ : num 7
  ..$ : num 8
  ..$ : num 9
  ..$ : num 10
 $ :List of 5
  ..$ : num 11
  ..$ : num 12
  ..$ : num 13
  ..$ : num 14
  ..$ : num 15
于 2013-02-13T16:08:57.307 に答える