首页 > 解决方案 > 检查用户是否为具有默认值的参数赋值

问题描述

我有一个f(x)默认值为x2 的函数。该函数返回正方形。

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)来做类似的事情。可能吗?

标签: rfunction

解决方案


您可以使用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

推荐阅读