如何提取从R中的另一个函数调用的函数中的变量名?
我的问题是如何从R中另一个函数调用的函数中提取变量名 为了说明,以下是一个示例:如何提取从R中的另一个函数调用的函数中的变量名?,r,variables,extract,R,Variables,Extract,我的问题是如何从R中另一个函数调用的函数中提取变量名 为了说明,以下是一个示例: a <- function(variable) { print(deparse(substitute(variable))) internala(substitute(variable)) } internala <- function(variableXX) { namex=deparse(substitute(variableXX)) print(name
a <- function(variable) {
print(deparse(substitute(variable)))
internala(substitute(variable))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
这意味着我可以从a
中提取变量的名称,但不能从internala
中提取
有什么想法吗
任何帮助都将不胜感激
玛丽亚这是一个适合我的东西。但是我不确定这是否是最佳解决方案
a <- function(variable) {
print(deparse(substitute(variable)))
my_command <- paste('internala(',substitute(variable),')',sep = '')
eval(parse(text = my_command))
}
internala <- function(variableXX) {
namex=deparse(substitute(variableXX))
print(namex)
}
a您可以更改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)
你最好不要和替补和朋友混在一起——你可能会创建一个很难编程的函数。为什么不直接将变量的名称作为字符串显式传递?;使用字符串名更直接。这很有帮助(谢谢),但在函数内部,我必须执行var,以便弄清楚,您想要的行为是什么?我猜你想把a(随便什么)
打印两次随便什么?如果同时执行internala(whatever)
是否也希望输出为whatever
?如果你调用foo怎么办?是的,你猜对了,我希望a(whatever)打印两次,internala(whatever)打印两次,而我实际上被卡住的地方正是你指出的,也就是说,如果我有另一个基于上一个例子的函数foo,看起来你想把表达式一直扩展到顶级调用,但是没有别的了?因此,如果还存在foo2 Upvote,因为它似乎起到了作用,除了两个小的诡辩:1)你应该取消替代品的parse,否则如果你调用a(b+1),你会得到一个错误。2.)根据maria的评论,你也必须向上看。
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)
a <- function(variable, vname=deparse(substitute(variable))) {
print(vname)
internala(variable, vname)
}
internala <- function(variableXX, namex=deparse(substitute(variableXX))) {
print(namex)
}
a(whatever)
a(whatever, "othername")