用r重复一个实验

用r重复一个实验,r,for-loop,R,For Loop,我有运行实验的代码: 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次并存储在一个向量中,但我不确定如何进行。接受Matthew的建议(通常这是一件好事),并简化代码: res <- replicate( 1000, sum(rbinom(sum(rbinom(5,1,0.5)),1,0.5)) ) 这似乎

我有运行实验的代码:

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次并存储在一个向量中,但我不确定如何进行。

接受Matthew的建议(通常这是一件好事),并简化代码:

res <- replicate(
  1000,
  sum(rbinom(sum(rbinom(5,1,0.5)),1,0.5))
)
这似乎是合理的,尽管你可能想确保它是你想要的。失败之所以发生,是因为代码中的
A
通常为0,但以这种方式重新格式化它并不是一个问题(然而,这意味着我无法轻松比较您的代码和我的代码,以确保它做的事情完全相同)


请注意,您不太可能获得
5
作为结果(事实上,我们不在这里),因为这意味着您必须连续赢5次掷硬币才能显示在最终结果中。

您正在寻找
复制
。如果在最后一节中运行
for(i in 1:a)…
时,
a=0
,您的代码也会失败。。我运行了3次,但在产生这个错误之前,它从未经过100次迭代。在这些情况下,可能需要使用if语句返回
Y=0
table(res)
# res
#   0   1   2   3   4 
# 254 386 240 102  18