【问题标题】:How to do a loop in a loop and save it in a table in r如何在循环中进行循环并将其保存在r中的表中
【发布时间】:2017-04-28 03:15:52
【问题描述】:

问题是:如果一位老师和他的 35 人班打赌“有多少人的生日相同?”。如果他输了赌注,他支付 2 美元,如果他赢了赌注,他得到 1 美元。他下了这个赌注1137次。所以,我做了一个循环来表示这一点。现在,我想重复这个测试 1000 次并将其保存在向量或表格中,这样我就可以对其进行推理测试。如何重复循环?

```{r}

exact=c(seq(1:365), seq(1:365), seq(1:365), seq(1:366))  
bucket=numeric()  
smithbucks=0  
for(i in 1:1137){  
  class=sample(exact, size = 35, replace = TRUE)  
hmmm=sum(duplicated(class))  
if (hmmm > 0) smithbucks = smithbucks +1  
else smithbucks = smithbucks -2}  

```

【问题讨论】:

  • 我正在尝试根据 1000 个样本找出他的平均利润
  • 您已经模拟了 1,137 次赌注,这不是给您所追求的平均利润吗?
  • @sconfluentus 看起来所有的括号都在那里。类示例返回一个长度为 35 的向量,我不确定您为什么认为它返回一个整数。
  • 并不是说你真的需要一个循环:$1000$ 的例子可以取自3*rbinom(1000,1137,0.8143832)-2

标签: r loops for-loop repeat


【解决方案1】:

有很多方法可以做到这一点。一种简单的方法是将它放在一个 sapply 循环中:

results <- sapply(1:1000, function(i) {
    exact=c(seq(1:365), seq(1:365), seq(1:365), seq(1:366))  
    smithbucks=0  
    for(i in 1:1137){  
      class=sample(exact, size = 35, replace = TRUE)  
    hmmm=sum(duplicated(class))  
    if (hmmm > 0) smithbucks = smithbucks +1  
    else smithbucks = smithbucks -2}
    return(smithbucks)
})

【讨论】:

  • 谢谢!这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2014-02-23
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多