15

次の(ネストされた)構造でリストを作成しようとしています。

l <- list()
for(i in seq(5)) l[[i]] <- list(a=NA,b=NA)
> str(l)
List of 5
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA

rep後で記入する空白のリストをたくさん作成しているので、これを経由または同様の方法で実行したいと思います(次のインデックスを参照してリストを展開できることは承知していますが、 2つの深さのインデックスを作成する場合は機能しません)。

これでうまくいったと思いrepましたが、そうではないようです。 ?rep次の例を示します。

fred <- list(happy = 1:10, name = "squash")
rep(fred, 5)

どちらが返されますか:

> str(rep(fred, 5))
List of 10
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"

つまり、リストをフラット化します。

list( rep(fred,5) )同様に失敗するものも試しました。

リストのリストを複製するにはどうすればよいですか?

4

2 に答える 2

18

これは担当者の行動に関係していると思います。担当者の前にネストする必要があります。

rep(list(fred),5)

str出力:

List of 5
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
于 2012-10-05T13:39:05.220 に答える
4

あなたが使用することができますreplicate

l <- replicate(5, list(a=NA,b=NA), simplify=FALSE)
于 2012-10-05T13:42:15.580 に答える