2017-05-17 39 views
2

假設一個函數已被綁定到多個名稱(每個名稱都在不同的綁定環境中)。有沒有辦法讓它找出哪些名稱(如果有)用於調用它?一個(named)函數能反思它被調用的名字嗎?

一個小示例:

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中的動機,我並不想解決什麼特定的問題。)

+2

添加一些示例代碼,設置你的描述會更容易爲人們所理解你想要什麼的環境,並提供解決方案。 –

回答

6

嘗試sys.call

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

注意:

  • 這將返回類"name"的對象。要將名稱作爲字符串使用,請使用as.character(sys.call()[[1]])

  • match.call()[[1]]也將工作作爲身體

相關問題