gpt4 book ai didi

r - 一个(命名的)函数可以反省调用它的名称吗?

转载 作者:行者123 更新时间:2023-12-02 08:13:33 25 4
gpt4 key购买 nike

假设一个函数已绑定(bind)到多个名称(每个名称都在不同的绑定(bind)环境中)。它有没有办法找出这些名称中的哪些(如果有)用于调用它?

一个简单的例子:

original.name <- function () cat("don't know my name (yet)...\n")
call.thunk <- function (thunk) thunk()
foo <- original.name

foo()
## don't know my name (yet)...
call.thunk(original.name)
## don't know my name (yet)...

在上面的第一次调用中,函数被调用为名称 foo;在第二个中,它被称为 thunk。是否可以修改函数的主体以便确定此信息?


(这个问题的动机是想更多地了解 R 中的内省(introspection);我不是要解决任何特定问题。)

最佳答案

尝试sys.call:

g <- f <- function() sys.call()[[1]]
f()
## f

注意:

  • 这将返回类 "name" 的对象。要将名称作为字符串使用 as.character(sys.call()[[1]])

  • match.call()[[1]] 也可以作为 body

关于r - 一个(命名的)函数可以反省调用它的名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44026153/

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