【问题标题】:Set parameters of a function which is itself a parameter of a function设置函数的参数,该函数本身就是函数的参数
【发布时间】:2015-10-27 11:56:34
【问题描述】:

我有一个 R 函数:

smallFunction <- function(x,y=2,z=3){ x+y+z }

我想将此函数的结果定义为较大参数的默认值:

bigFunction <- function(a,b,x,c=smallFunction(x,y,z))

如何定义 y 和 z 值?知道它们可以被定义或保留为默认值。 我真的不想做这样的事情:

bigFunction <- function(a,b,x,c=smallFunction(x,y,z),y=2,z=3)

因为实际上我有很多 smallFunction 的默认参数

我宁愿这样:

bigFunction <- function(a,b,x,c=smallFunction(x,y,z),...)

谢谢

【问题讨论】:

  • 可以定义 y 和 z 是什么意思?它们可能存在于全球环境中吗?
  • 用户应该能够在调用函数时手动输入值,而无需将值存储在全局环境中。他们有什么办法吗?
  • 好的,有道理。是的,下面的答案和我对此的评论是替代方法。

标签: r function parameters


【解决方案1】:

您可以将...bigFunction 传递到smallFunction

smallFunction <- function(x, y=2, z=3){ x+y+z }
bigFunction <- function(a,b,x, func=smallFunction, ...) { a+b+x+func(x=x, ...) }

例如,

bigFunction(1, 2, 3, y=10)
# [1] 22

正如@Frank 提到的,你可以做这样的事情来简化函数体

bigFunction <- function(a,b,x, func=smallFunction, ...) {
    tmp <- func(x=x, ...)
    a+b+x+tmp
}

【讨论】:

  • 华丽的方式。谢谢
  • tmp 函数是个好主意,从这里得到它:stackoverflow.com/a/4125300/2343633
  • @rbatt 这是一个非常好的问题/答案,我的收藏夹中有这个:)
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2012-01-14
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2012-09-08
相关资源
最近更新 更多