有谁知道如何编写一个函数F,它将函数调用(例如,mean(x = 1:10))作为参数,并仅返回被调用函数的名称(mean)?
到目前为止,我的最佳尝试总结如下
(function(x1){
return(deparse(substitute(x1)))
})(mean(x = 1:10))
### 'mean(x = 1:10)'
在反解析之前将 x1 (函数调用)更改为表达式似乎没有多大帮助:返回
(function(x1){
return(deparse(as.expression(substitute(x1))))
})(mean(x = 1:10))
# "expression(mean(x = 1:10))"
如果可能的话,我也希望能够使用匿名函数作为参数,所以F应该为 (function(x) print (x))(1) 返回 (function(x) print (x))。如果您需要任何澄清,请随时发表评论。谢谢。
编辑1:请注意,我想避免检查第一个括号并删除它之前的代码(对于“mean(x = 1:10)”将返回“mean”),作为“bad(Fun_nAme”实际上是 R 中的合法函数名。
已回答的问题: Josh O'Brien 的回答很完美:满足上述条件的函数F是
F <- function(x) deparse(substitute(x)[[1]])
它适用于二元运算符、标准函数和匿名函数。