从函数调用中提取函数调用名称

Rya*_*ell 6 r function call

有没有人知道如何编写一个函数F,它接受函数调用(例如,mean(x = 1:10))作为参数,并返回被调用函数的名称(mean)?

到目前为止,我的最佳尝试总结如下

(function(x1){

    return(deparse(substitute(x1)))

})(mean(x = 1:10))
### 'mean(x = 1:10)' 
Run Code Online (Sandbox Code Playgroud)

在解析之前将x1(函数调用)更改为表达式似乎没有多大帮助:返回

(function(x1){

    return(deparse(as.expression(substitute(x1))))

})(mean(x = 1:10))
# "expression(mean(x = 1:10))"
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想可以使用匿名函数作为参数太多,所以˚F应该返回(函数(x)的打印(X))的(函数(x)的打印(X))(1).如果您需要任何澄清,请随时发表评论.谢谢.

edit1:请注意,我想避免检查第一个括号并删除它之前的代码(对于"mean(x = 1:10)"将返回"mean"),作为"bad(Fun_nAme")实际上是R中的合法函数名.

问题回答: Josh O'Brien的答案很完美:满足上述条件的函数F

F <- function(x) deparse(substitute(x)[[1]])
Run Code Online (Sandbox Code Playgroud)

它适用于二元运算符,标准函数和匿名函数.

Jos*_*ien 8

这是一个简单的功能,可以满足您的需求:

F <- function(x) deparse(substitute(x)[[1]])

F(mean(x=1:10))
# [1] "mean"

F((function(x) print (x))(1))
# [1] "(function(x) print(x))"

F(9+7)
# [1] "+"
Run Code Online (Sandbox Code Playgroud)