2014-03-06 64 views
0

我有一個運行的實驗代碼:重複實驗中的R

X=rbinom(5,1,0.5) 
A=0 
for (i in 1:5) 
{A=A+X[i]} 
B=rbinom(A,1,0.5) 
Y=0 
for (i in 1:A) 
{Y=Y+B[i]} 

我想重複結果的1000倍,並將其存儲在一個載體,但我不知道該如何去做。

+1

您正在尋找'replicate'。 –

+0

如果在最後一節運行'for(i in 1:A)...'時出現'A = 0',您的代碼也會失敗。我跑了它3次,並且在產生這個錯誤之前它從來沒有超過100次迭代。也許你想在這些情況下使用if語句返回'Y = 0' –

回答

1

以馬修的建議(一件好事,一般做的),並簡化您的代碼:

res <- replicate(
    1000, 
    sum(rbinom(sum(rbinom(5,1,0.5)),1,0.5)) 
) 

我跑了一次,得到這個:

table(res) 
# res 
# 0 1 2 3 4 
# 254 386 240 102 18 

這雖然你可能似乎是合理的想要確保它是你想要的。因爲代碼中的A通常爲0,所以發生了故障,但通過這種方式進行重新配置,這不是問題(但是,這意味着我無法輕鬆比較您的代碼與我的代碼,以確保它完全相同) 。

請注意,您不太可能得到5作爲結果(實際上我們不在這裏),因爲這意味着您必須連續兩次贏取5次硬幣翻轉以顯示最終結果。