gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:16:01 26 4
gpt4 key购买 nike

有谁知道如何编写一个函数 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)) for (function(x) print (x))(1)。如果您需要任何说明,请随时发表评论。谢谢。

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

问题回答: Josh O'Brien 的回答很完美:满足上述条件的函数 F 是
F <- function(x) deparse(substitute(x)[[1]])

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

最佳答案

这是一个简单的函数,可以执行您想要的操作:

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] "+"

关于r - 从函数调用中提取函数调用名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com