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

Posted

技术标签:

【中文标题】在处理的参数上定义默认的 R 函数参数【英文标题】:Defining default R function parameters on processed arguments 【发布时间】:2019-04-12 08:25:54 【问题描述】:

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

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,这似乎不一致。

你知道我可以指定默认参数更易于理解的方法吗?

【问题讨论】:

可能是 missing() 而不是 is.null()。 ***.com/questions/7964830/… 如果这个默认值需要输入其他函数参数,我真的没有看到比你正在做的更好的方法了。 请注意 n=NULL, imo 是一个合法的默认值,只需在文档中指定如果缺少它将被设置为 length(..) 【参考方案1】:

也许你可以像这样解决它?

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)

【讨论】:

嗯...我不确定这是否可行,因为 default_function 需要 已处理 xy 我不确定我的理解是否正确,但是存储在 n 中的默认函数在 if-case 中执行时应该能够接收处理后的 x 和 y 值? 但老实说,我认为设置 n = NULL 并按照@RLave 的建议在文档中给出解释比这里建议的 n = 某种函数的方法更容易理解。 是的,我想你是对的。人们只需要开始阅读文档:P

以上是关于在处理的参数上定义默认的 R 函数参数的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用econocharts包创建微观经济或宏观经济图supply函数创建默认的供给曲线(supply curve)自定义配置supply函数的参数丰富可视化效果

函数定义默认参数

Python函数的参数详解

函数的参数

在 R 中设置函数参数的默认值

python定义函数时默认参数注意事项