重复函数中的上一行,直到满足if语句

时间:2012-06-18 18:39:00

标签: r

我想写一个if语句,在满足某个条件之前会继续重复一个问题

这样的事情:

fun<-function(){
  x<-readline("what is x? ")
  if(x>5)
    {print("X must be less than 5")
    **repeat lines 3 & 4**
}else{
  print("Correct")}

}

抱歉** - 但我不确定如何正确写出该行。我想要做的是每次输入大于5的数字时都要重复提示“什么是x”,直到给出小于5的数字。理论上,函数看起来像这样

fun()
what is x? 6
X must be less than 5
what is x? 8
X must be less than 5
what is x? 3
Correct

4 个答案:

答案 0 :(得分:6)

我不太确定你正在使用的语言,但像while循环这样的东西应该这样做。

fun<-function(){
  x<-readline("what is x? ")
  while(x>5)
  {
    print("X must be less than 5")
    x<-readline("what is x? ")
  }
  print("Correct")}
}

答案 1 :(得分:5)

readline返回一个字符向量,因此您需要在if之前将其强制转换为数字。然后你可以使用while循环(正如其他人指出的那样)。

fun <- function() {
  x <- as.numeric(readline("what is x? "))
  if(is.na(x)) stop("x must be a number")
  while(x > 5) {
    print("X must be less than 5")
    x <- as.numeric(readline("what is x? "))
    if(is.na(x)) stop("x must be a number")
  }
  print("Correct")
}

答案 2 :(得分:4)

您可以使用控制结构while

continue <- FALSE

while(!continue){
x<-readline("what is x? ")
  if(x>5){
    print("X must be less than 5")
  } else {
    continue <- TRUE
    print("Correct")
  }
}

有关详细信息,请参阅?"while"?Control

答案 3 :(得分:4)

其他人提及while,您也可以repeat使用if条件调用break。这可用于创建其他语言称为“直到”循环的内容。

这感觉问题比while选项更具问题(但它主要只是一种不同的语法风格,两者最终都会以编程方式对等)。