2

私はこのフォーラムと R を初めて使用するので、質問が明確でない場合や、このフォーラムの「不文律」に従っていない場合は、あらかじめお詫び申し上げます。

関数を数回実行している for ループを使用して、R でシミュレーション研究を行っています。forループが関数を実行するたびに、関数の結果をリストに書きたいと思います。これらのリストは、dim(x,x,Number of Simulation) を使用して配列に結合したいと考えています。これが正しい方法であるかどうかはわかりません。基本的に、X (シミュレーションの数) リストと結果を 1 つの変数に便利な方法で格納する方法を探しています (この変数を VAR[ i] <- 関数.. for ループ内)。

私が言いたいことが明確であることを願っています。私のサンプルコードは、私が探しているものをより明確にすると思います:

あらゆる種類のヒント/提案/回答に感謝します!

#These are e.g. the variables I get as output from the function.
a <- matrix(NA, 2,1)
b <- matrix(NA,2,1)
beta <- matrix(NA,2,1) 
bp <- array(NA,c(2,2,2))

#I save these variables in a list (this is done already in the function self)
results <- list(a = a, b = b, beta = beta, bp = bp)

#Now, I would like to create an array to save this list each time I run the 
#function in my for loop. I tried this, but did not succeed: 
results2 <- array(results, c(1,1,10))
results3 <- array(rep(results))
4

1 に答える 1

2

私があなたの質問を正しく理解していれば、別のリストを使用して関数のすべての出力を保存することをお勧めしますfun(例として、関数の戻り値を関数の引数に依存させましたx) 。

fun <- function(x){
  ##These are e.g. the variables I get as output from the function.
  a <- matrix(x/2, 2,1)
  b <- matrix(x/2,2,1)
  beta <- matrix(x/2,2,1) 
  bp <- array(x/2,c(2,2,2))
  list(a = a, b = b, beta = beta, bp = bp)
}

lapply次に、すべての結果を含むリストを取得するために for ループのラッパーである which を使用できます (ここでは、関数は 100 回呼び出されます)。

all.results <- lapply(1:100, fun)

などを使用してall.results[[1]]、各関数呼び出しの結果にアクセスできるようになりました。all.results[[2]]

forまたは、ループを使用する場合:

all.results <- list()
for (i in 1:100){
  all.results[[i]] <- fun(i)
}

これは役に立ちますか?

于 2013-05-08T16:48:00.193 に答える