【发布时间】:2015-07-06 19:31:39
【问题描述】:
我有函数 f1 和 f2 将函数作为参数,例如:
f1 <- function(FUN) {
...
}
f2 <- function(FUN) {
f1(FUN=FUN)
}
从函数f1内部,我需要找回传递给f2的函数的原始名称,例如"myFunc",而不是"FUN"。
基本上我们可以想象一个函数f1 使得f2(f1(mean)) 返回"mean"?如果FUN 是匿名的,我们可以例如返回NULL 或NA。
在 R 中是否有一种简单/标准的方法可以做到这一点?我尝试使用手动搜索相同的功能代码(但它不是很干净,我正在寻找更好的解决方案)
fn = unlist(as.list(lsf.str(envir=.GlobalEnv)))
for (f in fn) {
if (setequal(paste(body(myFunc)),paste(body(f)))) {
return(f)
}
}
【问题讨论】:
-
这里没有足够的信息。您需要创建一个可重现的示例。如果
FUN应该是一个函数,它可能是匿名的。在这种情况下应该返回什么? -
@Roland 基本上我们可以想象一个函数
f1使f2(f1(mean))返回“平均值”吗?如果 FUN 是匿名的,我们可以例如返回 NULL 或 NA。我根据您的反馈修改了问题
标签: r function argument-passing