Mar*_*ria 5 variables r extract
我的问题是如何从R中另一个函数调用的函数中提取变量的名称?
为了说明,这是一个例子:
a <- function(variable) {
print(deparse(substitute(variable)))
internala(substitute(variable))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
Run Code Online (Sandbox Code Playgroud)
调用该函数 a 会得到以下结果:
>a(whatever)
[1] "whatever"
[1] "substitute(variable)"
Run Code Online (Sandbox Code Playgroud)
这意味着我可以提取变量的名称whatever从a,但不能从internala.
有什么想法吗?
任何帮助将不胜感激!
玛丽亚
您可以更改a函数来替换internala函数的参数及其eval:
a <- function(variable) {
print(deparse(substitute(variable)))
eval(substitute(internala(variable))) # this is only change
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
a(whatever)
Run Code Online (Sandbox Code Playgroud)
正如哈德利建议的那样,最好直接传递名称。我通常会做这样的事情:
a <- function(variable, vname=deparse(substitute(variable))) {
print(vname)
internala(variable, vname)
}
internala <- function(variableXX, namex=deparse(substitute(variableXX))) {
print(namex)
}
a(whatever)
Run Code Online (Sandbox Code Playgroud)
每个函数都可以在不传递名称的情况下调用,但您可以覆盖它。例如:
a(whatever, "othername")
Run Code Online (Sandbox Code Playgroud)