是否可以包装R函数以修改其功能?是否可以“包装”R函数以修改其功能?
这里有一个玩具示例来解释我的意思。考虑一下这个功能sum2
:
sum2 <- function (x) if (length(x) == 1) { cat(x); sum(x) } else sum(x)
它做什么呢sum
,用细小的改动。假设我想重新定义sum
本身做什么sum2
在这里做。我怎样才能以通用的方式做到这一点,而不知道我正在包装的函数的内部?
我想这样做,暂时“修复”一个软件包功能,而不必修改和重新安装软件包。我想检查它的输入并在输入满足某些条件时返回一个特殊值。
(对于那些谁是深深熟悉的数学,我正在寻找类似的东西Gayley-Villegas trick)
这适用于某些用途。但是另一个包可能会调用'sum'作为'base :: sum',并且不会看到你的定义。 – 2013-05-11 03:25:45
对于谁低估:不是在许多情况下(即使不是全部)在实践中运作良好的解决方案,而是如何发布更好的解决方案?目前还没有其他答案可以解决我遇到的实际问题。这一个做到了,所以我分享了它,而不是让问题变得憔悴。 – Szabolcs 2013-05-13 13:26:30