我看过In R, how to get an object's name after it is sent to a function?并有类似的问题。上面的内容在定义后获取对象名称。我想要的是在函数中定义它时获取名称,即在调用函数时打印对象名称。
不同的是,我想在本地环境中定义之前找到对象的名称。
我希望我的函数foo
也能在输出中打印对象名。所以我的函数foo
看起来像这样。
foo<-function(x) {
print('name of object that is calling foo')
return(x)
}
这将返回字符串&#34;正在调用foo&#34;的对象的名称。 1.我想要的是打印功能&#34;对象&#34;当我拨打object = foo(1)
时,我就是1。我知道match.call()
返回函数和参数但是我找不到一个函数来返回当前正在调用函数的对象名。
我能想到的一个看似合理的解决方法是浏览历史记录并打印出与match.call()
匹配的第一个对象,但我希望这是一个更简单的方法。
随时问我任何澄清。
答案 0 :(得分:0)
我希望这会有所帮助:
foo <- function(b){
a = invisible(traceback(b))
if (length(a)>=2){
a = a[[2]]
}else{
a = "myself"
}
print(paste("last object which called me was:",a))
}
bar <- function (b){
foo(b)
}
baz <- function (d){
bar(d)
}
tt =setClass('tt',slots = c(g = "function"))
newtt <- tt(g = function(a){baz(a)})
如果您使用newtt@g(2)
,您将拥有:
> newtt@g(2)
4: foo(b) at #2
3: bar(d) at #2
2: baz(a) at #1
1: newtt@g(2)
[1] "last object which called me was: bar(d)"
我不确定这是否是你想要的。