在处理的参数上定义默认的R函数参数

时间:2019-04-12 08:25:55

标签: r function

我正在编写一个需要默认参数才能工作的包函数,但其​​值必须从该函数的已处理(其他)参数中获取。 截至目前,我正在这样做:

myfunc <- function(x, y, n=NULL){
  processed <- some_other_func(x,y)
  x <- processed$x
  y <- processed$y
  if(is.null(n)){
    n <- length(intersect(x,y))/3
  }
  # do stuff
}

但是理想情况下,我希望使用默认表达式而不是NULL,因为如果我的文档说默认值为length(intersect(x,y))/3,这似乎是不一致的。

您知道我可以指定默认参数更容易理解的一种方法吗?

1 个答案:

答案 0 :(得分:0)

也许您可以解决类似的问题?

default_function <- function(v1, v2)
{
  return((v1 + v2)/2)
}

dummy_function <- function(x, y, n = default_function)
{
  x = x
  y = y
  if(class(n) == "function") n = n(x,y) # if n is any kind of function do it

  print(paste(x, y, n))

}


dummy_function(1, 2)
dummy_function(1, 2, 100)