0

Rのループについて質問です。

たとえば、現在 t=0 で 100 人が生存しています。基本的に、各人は指数 (-mu) の確率で生存します。ここに mu=0.1 を入れます。

t=1 で生きている人の数を取得するために、10 個のサンプルを生成したいと考えています。だから私はやったし、以下を取得します。

指図:

set.seed(123)
alive <- 100    
mu <- 0.1
sample <- 10
alive1 <- rbinom(sample,alive,exp(-mu)) 
alive1 

# [1] 92 88 91 87 86 95 90 87 90 91

そして今、私はt=20までそれを続けたいと思っています。

指図 :

alive2 <- rbinom(10,alive1,exp(-mu))
alive2
alive3 <- rbinom(10,alive2,exp(-mu))
alive3
....

alive20 <-rbinom (10,alive19,exp(-mu))
alive20

出力:

alive2 <- rbinom(10,alive1,exp(-mu))
alive2

# [1] 78 80 81 78 81 82 83 83 83 77

alive3 <- rbinom(10,alive2,exp(-mu))
alive3

# [1] 67 71 72 63 72 73 75 75 77 72

...

ただし、特に時間を延長したい場合は、コマンドを繰り返し続けたくありません。私の問題のためにrでループを行うにはどうすればよいですか?

ありがとう!

4

2 に答える 2

4
set.seed(123)
alive <- vector("list", 20)
mu <- 0.1
n <- 10

alive[[1]] <- rbinom(n, 100, exp(-mu))
for(i in 2:20)
    alive[[i]] <- rbinom(n, alive[[i-1]], exp(-mu))

一般的に使用される関数との混同を避けるためにsample、変数の名前を に変更しました。nsample()

于 2013-10-22T15:15:22.137 に答える
0
set.seed(123)
alive <- 100    
mu <- 0.1
sample <- 10
alive1 <- rbinom(sample,alive,exp(-mu)) 


for ( i in 2:20)
{
    assign(
        paste0("alive",i),
        rbinom(10,get(paste0("alive",(i-1))),exp(-mu))
    )
}

または、リストに入れるという@Backlinの提案-

set.seed(123)
alive <- 100    
mu <- 0.1
sample <- 10
Aliveset <- vector(mode = "list", length = 20)
Aliveset[[1]] <- rbinom(sample,alive,exp(-mu)) 
for ( i in 2:20)
{
Aliveset[[i]] <- rbinom(10,Aliveset[[i-1]],exp(-mu))
}
于 2013-10-22T15:10:21.267 に答える