0

物事をより速くするためにrでやりたいと思うループには少しトリッキーな課題があります。一連の小さな計算を一連の変数に割り当てるにはどうすればよいですか? 例:

fex1 = rbind(ben1,mal1)
fex2 = rbind(ben2,mal2)
fex3 = rbind(ben3,mal3)
....
....
fex40 = rbind(ben40,mal40)

ここで、ben(i) と mal(i) はシーケンス 1:40 の 7 行 13 列の行列であり、fex(i) も 1:40 の変数名のシーケンスです。基本的に、いくつかのデータをさまざまなフォールドに分割し、分割されたデータセットの組み合わせをバインドして他の計算を実行したいと考えています。lapply を使用して rbind やその他の関数をループしましたが、行列のシーケンスに rbind のような関数を適用し、変数のシーケンスにも値を格納するというこのタスクをどのように達成しますか?

ありがとう。

4

1 に答える 1

2

ここでは実際にリストを使用する必要があります。

# 
ben <- <list of all your ben's>
mal <- <list of all your mal's>

fex <- mapply(rbind, ben, mal)

# then just index using
fex[[i]]

個別の変数が必要な場合は、次を使用しますassign

N <- 30 # however many of each `ben` and `mal` you have
for (i in N) {
  bi <- paste0(ben, i)
  mi <- paste0(mal, i)
  fi <- paste0(fex, i)

  assign(fi, rbind(get(bi), get(mi)))
}

オブジェクトをリストに集めるための注意:

ben <- lapply(do.call(paste0, list("ben", 1:N)), get)
mal <- lapply(do.call(paste0, list("mal", 1:N)), get)

# Which can then be indexed by
ben[[7]]
mal[[12]]  # etc

ただし、最初からリストに配置するようにしてください。

于 2013-10-03T13:11:20.527 に答える