我试图通过几个函数传递变量,而在最后一个函数中,我想获取原始变量的名称。但是,似乎R中的替代功能仅在“本地”环境中或仅在一个更高级别上才能看到。好吧,让我用代码解释一下:
fun1 <- function (some_variable) {deparse(substitute(some_variable)}
fun2 <- function (var_pass) { fun1 (var_pass) }
my_var <- c(1,2) # I want to get 'my_var' in the end
fun2 (my_var) # > "var_pass"
好吧,似乎我们在打印仅传递给fun1的变量的名称。替代品的文档告诉我们,我们可以使用env参数来指定外观。但是通过传递.Global或.BaseNamespaceEnv作为替代参数,我得到了更奇怪的结果-“ some_variable”
我相信答案是使用env参数在此函数中,因此,请您解释一下它的工作原理以及如何获得所需的信息。提前致谢!
最佳答案
我建议您考虑将可选名称值传递给这些函数。我之所以这样说,是因为您似乎真的想将名称用作最终结果的标签;因此,实际上变量本身与其名称无关紧要。你可以做
fun1 <- function (some_variable, name=deparse(substitute(some_variable))) {
name
}
fun2 <- function (var_pass, name=deparse(substitute(var_pass))) {
fun1 (var_pass, name)
}
my_var <- c(1,2)
fun2(my_var)
# [1] "my_var"
fun1(my_var)
# [1] "my_var"
这样,如果您最终拥有一些奇怪的变量名称以及为结果赋予更好名称的内容,那么您至少可以选择。并且默认情况下,它应该执行您想要的操作而不必使用name参数。
关于r - 如何获取R中的变量名称(替代)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24309910/