有没有办法比较两个函数对象是否相同?
m <- mean
m == mean ## don't work
## this seems not to be the correct way:
functionBody(mean)==functionBody(m)
Run Code Online (Sandbox Code Playgroud)
编辑:更多细节.我有一个带有两个参数的函数(一个矩阵和一个用户定义的函数,它按列方式应用,例如mean,median,...).如果该功能是mean我想要改为使用colMean(以节省一些运行时间).
foo <- function(m, fun) {
#if (fun==mean) {
# return(colMeans(m));
#} else {
return(apply(m, 2, fun));
#}
}
Run Code Online (Sandbox Code Playgroud)
dig*_*All 20
你可以使用identical:
identical(m,mean)
Run Code Online (Sandbox Code Playgroud)
我使用isTRUE(all.equal(function1,function2)),但这与其他方法有类似的缺点.
有趣的是,all.equal给出了两个操作数如何不同的一个很好的总结(试试all.equal(function1,function2).