【问题标题】:Basic While Loop with If Statement带有 If 语句的基本 While 循环
【发布时间】:2021-03-18 05:56:33
【问题描述】:

我正在为 R 类创建一个运行 while 循环和 if 语句的基本函数,我正在寻求帮助。

我不想让事情变得过于复杂,所以我更愿意在这个答案中只坚持基础知识。

我创建了一个基本的足球得分函数,其目的是在码数 >=80 时为得分加 7 分,如果码数 >=60(如果使用 else if),总分加 3 分,总分加 0得分

这是我开始的地方:

teamA <- function(drives) {
  i <- 0
  score <- 0
  while (i < drives){
    yards <- sample(0:100,1)
    if (yards >= 80){
      score <- score + 7
    }
    else if (yards >= 60){
      score <- score + 3
    }
    else {
      score <- score
    }
    i <- i + 1
    return (score)
  }
}
teamA(5)

这显然与真实足球不准确,但我想在课堂上简化它。

我想创建一个函数,您可以在其中指定团队拥有的驱动器数量,并根据我在 while 循环中编写的样本生成的随机码数来编译分数。

有人可以帮助修复此代码吗?我对 R 不是很有经验,也想不出解决问题的最佳方法。

我现在最大的问题是,我似乎只返回一个分数,而不是汇总总分。

【问题讨论】:

    标签: r function loops if-statement while-loop


    【解决方案1】:

    您的代码中的问题是您将return(score) 放在while 循环中。 return 终止函数并返回相应的值。因此,您的函数总是在循环的第一次迭代后终止。

    我对您的代码所做的另一个编辑是删除最后一个条件,因为它不会更改 score 的值。

    set.seed(4)
    
    teamA <- function(drives) {
      i <- 0
      score <- 0
      while (i < drives) {
        yards <- sample(0:100,1)
        if (yards >= 80) {
          score <- score + 7
        }
        else if (yards >= 60) {
          score <- score + 3
        }
        i <- i + 1
      }
        return(score)
    }
    
    teamA(5)
    [1] 6
    

    调试此类函数的一种简单方法是在代码中放置browser(),然后查看函数中发生的情况。

    【讨论】:

    • 感谢您对 browser() 函数的额外建议
    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2015-08-03
    相关资源
    最近更新 更多