我想输出水果用户输入的数量,如果它是< 0或者如果它大于数字我希望它打破。不知道为什么它不起作用?!
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)
}
我应该在数字为4时输出4,但它会中断。 &GT; how.many( “香蕉”,5)
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
答案 0 :(得分:2)
你的测试是相反的。您需要指定一个不停止的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"
答案 1 :(得分:1)
stopifnot
实际上意味着它所说的:“如果不是就停止(......)”。并且(4> 5)不为真。所以它停止了。你想要相反的迹象。