检查用户是否将参数值赋予默认值

时间:2019-01-03 21:19:58

标签: r function

我有一个函数f(x),其中x的默认值为2。该函数返回平方。

f <- function(x = 2){
      return(x^2)
     }

我想检查功能是否用户给x赋值。即使给定的值为2,我也想知道。

也许这就是我想要的等效代码。

 f <- function(x){
       if(!missing(x)) print("User did not give value to x")
       if(missing(x)) x <- 2
     return(x^2)
    } 

我想通过将x的默认值设置为2(也不是NULL)来做类似的事情。有可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用match.call。在这种情况下,我们可以做到

f <- function(x = 2) {
  if(is.null(match.call()$x))
    print("Nothing")
  x^2
}

f()
# [1] "Nothing"
# [1] 4

f(2)
# [1] 4

f(x = 2)
# [1] 4