是否可以包装R函数来修改其功能?
这是一个解释我的意思的玩具示例.考虑这个功能sum2:
sum2 <- function (x) if (length(x) == 1) { cat(x); sum(x) } else sum(x)
Run Code Online (Sandbox Code Playgroud)
sum通过微小的修改,它做了什么.假设我想重新定义sum自己做sum2这里做的事情.我怎么能以一般的方式做到这一点,却不知道我正在包装的函数的内部结构?
我想这样做暂时"修复"一个包函数,而不必修改和重新安装包.我想检查它的输入并返回一个特殊值,以防输入满足某些条件.
(对于那些对Mathematica非常熟悉的人,我正在寻找类似于Gayley-Villegas技巧的东西.)
你需要小心这一点.所有包现在都有Namespaces,并将调用同一名称空间中的其他函数.从主命令提示符调用函数时,您的方法可能会起作用.但是包中的函数将调用原始函数,而不是您的修改.
查看assignInNamespace有关在命名空间中进行更改的方法的帮助和相关函数.该trace函数是另一种修改函数的方法,为现有函数添加了一些额外的代码.