R代码忽略了nargs()if语句

时间:2018-06-22 16:41:42

标签: r args

无法弄清楚为什么R在后面忽略了nargs()

foo <- function(x=NULL) {

  if (nargs() > 1){
    stop("Enter 1 argument only")
  }
  cat("call was ", deparse(match.call()), "\n", sep = "")
}

执行foo("a","b")时,我得到Error in foo("a", "b") : unused argument ("b")而不是Enter 1 argument only

请告知

1 个答案:

答案 0 :(得分:2)

对于多个参数,我们可以使用三个点(...),带有nargs的条件将对其进行评估

foo <- function(...) {

 if (nargs() > 1){
  stop("Enter 1 argument only")
 }
  cat("call was ", deparse(match.call()), "\n", sep = "")
 }

foo("a", "b")
  

foo(“ a”,“ b”)中的错误:仅输入1个参数

foo("a")
#call was foo("a")