1

例を挙げると、このコードは、私の見方では、それぞれ 100 個の要素を持つ 10 個のリストを生成するはずです。

for (i in 1:10){
assign(paste("List", i, sep="."), vector("list", length=100))
  for (j in 1:100){
    assign(paste("List", i, sep=".")[[j]], j+1)
  }
}

しかし、そうではありません..最初の割り当ては正常に機能し、100 個の要素を持つ空のリストを作成しますが、要素 [[j]] をどのように埋めることができますか? ありがとう!

4

3 に答える 3

6

グローバル環境で10個のリストを作成する代わりに、リストのリストを作成する方がはるかに簡単です。

mybiglist <- list()
for(i in 1:10) {
  mybiglist[[i]] <- list()
  for( j in 1:100 ) {
    mybiglist[[i]][[j]] <- j+1
  }
}

任意のリストに名前を追加することも、数字の下付き文字でパーツにアクセスすることもできます。これはまた、グローバル環境を損なうことはなく、通常はデバッグが容易です。また、10個のリストで何かをしたい場合は、別のループと戦う必要はなく、lapply/sapplyを使用できます。保存/ロード/削除/探索などもできます。10ではなく1つのオブジェクト。

于 2011-06-16T00:35:55.840 に答える
6

問題はassign、少しトリッキーにならない限り、オブジェクトの要素に値を代入するために使用できないことです。下記参照。

for (i in 1:10){
  assign(paste("List", i, sep="."), vector("list", length=100))
  for (j in 1:100){
    assign(paste("List", i, sep="."), 
      {x <- get(paste("List", i, sep=".")) 
       x[[j]] <- j + 1 
       x})
  }
}

rm(i, j, x)
于 2011-06-16T01:31:40.507 に答える
1

以下のコードは、それぞれ100個の要素を持つ10個のリストを生成します。

myList = list()

for (i in 1:10) {
      myList[[i]] = 1:100
}

ただし、ベクトルの10個のリストまたはリストの10個のリストが必要かどうかはわかりません

後者が必要な場合は、次のようにすることができます。

myList = list()

for (i in 1:10) {
  myList[[i]] = list()

  for (j in 1:100) {
      myList[[i]][[j]] = j
  }  
}
于 2011-06-16T00:27:31.750 に答える