假设一个函数已绑定到多个名称(每个名称都在不同的绑定环境中)。有没有办法找出哪些名称(如果有的话)被用来调用它?
一个简单的例子:
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中的内省;我并没有试图解决任何具体问题。)
答案 0 :(得分:6)
尝试sys.call
:
g <- f <- function() sys.call()[[1]]
f()
## f
请注意:
返回类"name"
的对象。要将名称作为字符串使用as.character(sys.call()[[1]])
。
match.call()[[1]]
也可以作为正文