如何提取从 R 中的另一个函数调用的函数中的变量名称?
我的问题是如何从 R 中另一个函数中调用的函数中提取变量的名称?
为了说明这一点,这里有一个例子:
a <- function(variable) {
print(deparse(substitute(variable)))
internala(substitute(variable))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
调用函数a
给出以下结果:
>a(whatever)
[1] "whatever"
[1] "substitute(variable)"
这意味着我可以从a
中提取变量whatever
的名称code>,但不是来自 internala
。
对此有什么想法吗?
任何帮助将不胜感激!
玛丽亚
My question is how to extract the name of a variable from a function that is called in another function in R?
To illustrate, here is an example:
a <- function(variable) {
print(deparse(substitute(variable)))
internala(substitute(variable))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
Calling the function a
gives the following result:
>a(whatever)
[1] "whatever"
[1] "substitute(variable)"
which means that i can extract the name of the variable whatever
from a
, but not from internala
.
Any thoughts on this?
Any help will be appreciated!
Maria
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你最好不要与替代者和朋友搞混——你可能会创建一个很难编程的函数。为什么不直接将变量的名称作为字符串显式传递呢?
You're better off not messing around with substitute and friends - you are likely to create a function that will be very hard to program against. Why not just pass in the name of the variable explicitly as a string?
您可以更改
a
函数来替换internala
函数的参数并eval
它:正如hadley建议的那样,最好直接传递名称。我通常会这样做:
每个函数都可以在不传递名称的情况下调用,但您可以覆盖它。例如:
You could change
a
function to substitute argument of aninternala
function andeval
it:As hadley suggest its better to directly pass names. I usually do something like that:
Each function could be call without passing name, but you can override it. For example:
这是对我有用的东西。不过我不确定这是否是最佳解决方案
Here is something that works for me. However I' m not sure if this is the optimum solution