R 为什么stopifnot没有按预期工作?

R 为什么stopifnot没有按预期工作?,r,function,break,conditional-statements,R,Function,Break,Conditional Statements,我想输出水果用户输入的数量,若它是。多少(“香蕉”,5) 多少香蕉 错误:水果编号>编号不正确 stopifnot实际上是指它所说的:“如果不(…)就停止”。(4>5)不是真的。所以它停止了。您需要相反的符号。您的测试是反向的。您需要指定一个不停止的真值(正如它所说的,stopifnot) 多少 how.many<-function(fruit, number){ string<-paste("How many",fruit,"?",sep=" ") #cat(string)

我想输出水果用户输入的数量,若它是。多少(“香蕉”,5) 多少香蕉 错误:水果编号>编号不正确
stopifnot
实际上是指它所说的:“如果不(…)就停止”。(4>5)不是真的。所以它停止了。您需要相反的符号。

您的测试是反向的。您需要指定一个不停止的真值(正如它所说的,stopifnot)

多少
how.many<-function(fruit, number){
  string<-paste("How many",fruit,"?",sep=" ")
  #cat(string)
  #return(scan(string))
  fruit_number<-readline(string)
  stopifnot(fruit_number>number)
  stopifnot(fruit_number<0)
  return(fruit_number)
}
How many banana ?0
Error: fruit_number > number is not TRUE
> how.many("banana",5)
How many banana ?9
Error: fruit_number < 0 is not TRUE
> how.many("banana",5)
How many banana ?4
Error: fruit_number > number is not TRUE
how.many<-function(fruit, number){
    string<-paste("How many",fruit,"?",sep=" ")
    #cat(string)
    #return(scan(string))
    fruit_number<-readline(string)
    stopifnot(fruit_number<=number)
    stopifnot(fruit_number>=0)
    return(fruit_number)
}

> how.many("banana", 5)
How many banana ?9
Error: fruit_number <= number is not TRUE
> how.many("banana", 5)
How many banana ?4
[1] "4"