gpt4 book ai didi

r - 如何在函数调用中获取变量名?

转载 作者:行者123 更新时间:2023-12-04 16:46:38 30 4
gpt4 key购买 nike

对不起,我的英语不好,但我想不出一个标题可以简洁地描述我的问题,这个问题比标题所暗示的要复杂一些。

这是我想要实现的目标:

在全局环境中,可以获取变量的名称,例如xyz。 , 通过调用 deparse(substitute(xyz)) .我需要在我的代码中的几个地方使用它,所以我决定把它变成一个函数:getVarName <- function(x){deparse(substitute(x))} .

然后我写一些函数myfunc我需要在其中调用 getVarName :

myfunc <- function(x){cat(getVarName(x))}

现在问题来了:当我调用 myfunc(y) 时, 而不是打印出 y , 它仍然打印出 x .我怀疑这与 substitute() 所在的环境有关成功了,但在那个方向上没有运气。

我需要做什么才能使其正确?

附言如果有人可以编辑标题并更好地描述这个问题,那就太好了,谢谢!

最佳答案

根据我在测试您的代码时所见,deparse(substitute(x)) 似乎只会打印出调用堆栈中紧靠其下方的变量名称。在你的例子中:

getVarName <- function(x){ deparse(substitute(x)) }
myfunc <- function(x){ cat(getVarName(x)) }
myfunc(y)

getVarName() 的调用正在处理来自 myfunc() 的变量,它被称为 x。实际上,您传递的变量 y 不再是调用堆栈的一部分。

解决方案:

只需在要打印变量名称的函数中直接使用deparse(substitute(x))。它很简洁,您可以证明拥有一个辅助函数就像拥有一个一样容易。

关于r - 如何在函数调用中获取变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006687/

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