检查用户';R中的s输入是数字和整数。我不知道

检查用户';R中的s输入是数字和整数。我不知道,r,compiler-errors,R,Compiler Errors,我无法使被注释的行正常工作。我需要一些帮助。另外,关于如何使更新后的余额保持在函数内,有什么建议吗?这样,第二次玩游戏时,您的余额与1000不同,这取决于您在第一次游戏上的下注量。我不知道如何在下次运行函数时保持循环中更新的平衡。谢谢 playCraps <- function(betSize){ balance <- 1000 errors<- character(0) if(betSize > balance){ errors <- past

我无法使被注释的行正常工作。我需要一些帮助。另外,关于如何使更新后的余额保持在函数内,有什么建议吗?这样,第二次玩游戏时,您的余额与1000不同,这取决于您在第一次游戏上的下注量。我不知道如何在下次运行函数时保持循环中更新的平衡。谢谢

playCraps <- function(betSize){
  balance <- 1000
  errors<- character(0)
  if(betSize > balance){
    errors <- paste("Please enter a bet size within your current balance", sep="\n")
  }
  # if(!is.numeric(betSize)){
  #   errors <- paste("Please enter a number", sep="\n")
  # }
  # if(!is.integer(betSize)){
  #   errors <- paste("Please enter a whole number", sep="\n")
  # }
  if(length(errors) > 0){
    stop(errors)
  }

playCraps您需要使用L来显式表示整数。这将返回false:
is.integer(3)
这将返回true:
is.integer(3L)
我建议将balance作为函数的参数。通常情况下,您无法执行在R中尝试执行的操作,即立即调用和修改函数。T3HD0NK3Y,您可以在调用之间实现
平衡
持久化`(这需要一些工作),但我经常发现,在函数和工作流的设计方面存在潜在的错误假设。用持久性解决它可能不是惯用的、高效的或弹性/健壮的解决方案。因为我们看不到您的“循环”,所以获取完整的上下文有点困难。你能在问题中添加上下文、样本数据和再现性吗?(参考文献:,和)暂时忘记平衡问题,我关心的是获得平衡!是整数和!我现在要为他工作。我不明白为什么!is.integer(betSize)没有像我希望的那样工作。
is.integer
没有根据数学规则检查数字是否为整数。它正在检查它是否存储为整数。您需要通过
L
明确地告诉R您想要一个存储为整数的数字。