R 中的包装函数
Wrapper function in R
谁能帮我理解 r 中的包装函数是什么?如果您能借助有关构建自己的包装函数以及何时使用包装函数的示例来解释它,我将不胜感激。
提前致谢。
假设我想使用 mean()
,但我想设置一些默认参数,而我的用例不允许我在实际调用 mean()
时添加其他参数。
我可以创建一个包装函数:
mean_noNA <- function(x) {
return(mean(x, na.rm = T))
}
mean_noNA
是 mean()
的包装器,我们已将 na.rm
设置为 TRUE。
现在我们可以像 mean(x, na.rm = T)
一样使用 mean_noNA(x)
。
Wrapper functions 出现在任何编程语言中,它们只是意味着您将一个函数“包装”在另一个函数中,以某种有用的方式改变它的工作方式。当我们提到“包装器”函数时,我们指的是一个函数,该函数的主要目的是调用一些内部函数;包装器中可能会有一些更改或额外的计算,但这非常小,原始函数构成了大部分计算。
例如,考虑以下 R
中 log
函数的包装函数。原始函数的缺点之一是它不能正确处理负数输入(它给出 NaN
和警告消息)。我们可以通过创建一个将其转换为 :
的“包装器”函数来解决这个问题
Log <- function(x, base = exp(1)) {
LOG <- base::log(as.complex(x), base = base)
if (all(Im(LOG) == 0)) { LOG <- Re(LOG) }
LOG }
函数 Log
是 log
的“包装器”,它对其进行调整,使其现在可以接受数字或复数输入,包括负数输入。如果它接收到 non-negative 数字或复杂输入,它会给出与原始 log
函数相同的输出。但是,如果给它一个负数输入,它会给出应该由复数对数返回的复数输出。
谁能帮我理解 r 中的包装函数是什么?如果您能借助有关构建自己的包装函数以及何时使用包装函数的示例来解释它,我将不胜感激。
提前致谢。
假设我想使用 mean()
,但我想设置一些默认参数,而我的用例不允许我在实际调用 mean()
时添加其他参数。
我可以创建一个包装函数:
mean_noNA <- function(x) {
return(mean(x, na.rm = T))
}
mean_noNA
是 mean()
的包装器,我们已将 na.rm
设置为 TRUE。
现在我们可以像 mean(x, na.rm = T)
一样使用 mean_noNA(x)
。
Wrapper functions 出现在任何编程语言中,它们只是意味着您将一个函数“包装”在另一个函数中,以某种有用的方式改变它的工作方式。当我们提到“包装器”函数时,我们指的是一个函数,该函数的主要目的是调用一些内部函数;包装器中可能会有一些更改或额外的计算,但这非常小,原始函数构成了大部分计算。
例如,考虑以下 R
中 log
函数的包装函数。原始函数的缺点之一是它不能正确处理负数输入(它给出 NaN
和警告消息)。我们可以通过创建一个将其转换为
Log <- function(x, base = exp(1)) {
LOG <- base::log(as.complex(x), base = base)
if (all(Im(LOG) == 0)) { LOG <- Re(LOG) }
LOG }
函数 Log
是 log
的“包装器”,它对其进行调整,使其现在可以接受数字或复数输入,包括负数输入。如果它接收到 non-negative 数字或复杂输入,它会给出与原始 log
函数相同的输出。但是,如果给它一个负数输入,它会给出应该由复数对数返回的复数输出。