gpt4 book ai didi

r - 如何获取函数中使用的内置函数列表

转载 作者:行者123 更新时间:2023-12-04 22:10:29 24 4
gpt4 key购买 nike

假设我有一个名为 Fun1 的函数,我在其中为不同的进程使用了​​许多不同的 R 内置函数。那么我怎样才能得到这个函数 Fun1 中使用的内置函数的列表

  Fun1 <- function(x,y){
sum(x,y)
mean(x,y)
c(x,y)
print(x)
print(y)
}

所以我的输出应该像字符列表,即 summeancprint 。因为这些是我在函数 Fun1 中使用的内置函数。

我试过使用 grep 函数
 grep("\\(",body(Fun1),value=TRUE)
# [1] "sum(x, y)" "mean(x, y)" "c(x, y)" "print(x)" "print(y)"

看起来没问题,但不应该出现参数,即 xy 。这里只是函数 Fun1 内部使用的函数名称列表。

所以我的总体目标是打印 unique list of in-built functions or any create functions inside a particular function ,这里是 Fun1

对此的任何帮助表示高度赞赏。谢谢。

最佳答案

您可以使用 all.vars() 获取出现在 Fun1 主体内的所有变量名称(包括函数),然后将其与一些准备好的函数列表进行比较。您提到了内置函数,因此我会将其与基本包对象名称进行比较。

## full list of variable names inside the function body
(vars <- all.vars(body(Fun1)[-1], functions = TRUE))
# [1] "sum" "x" "y" "mean" "c" "print"

## compare it with the base package object names
intersect(vars, ls(baseenv()))
# [1] "sum" "mean" "c" "print"

我删除了函数体的第一个元素,因为大概你不关心 { ,它会与基本包列表匹配。

另一种可能性,尽管不太可靠,是将 Fun1 的形式参数与函数中的所有变量名称进行比较。就像我说的,可能不太可靠,因为如果你在函数内部进行赋值,你最终会得到不正确的结果。
setdiff(vars, names(formals(Fun1)))
# [1] "sum" "mean" "c" "print"

不过这些都很有趣,你可以摆弄它们。

关于r - 如何获取函数中使用的内置函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464205/

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