Evi*_*ton 13 variables r substitution
我试图通过几个函数传递变量,并在最终函数上我希望得到原始变量的名称.但看起来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"
Run Code Online (Sandbox Code Playgroud)
好吧,看起来我们打印的变量名只传递给fun1.替代品的文档告诉我们,我们可以使用env参数来指定我们可以看到的位置.但是,通过传递.全球或.BaseNamespaceEnv作为参数来代替我更奇怪的结果- "some_variable"
我相信这个函数的回答是使用env参数,所以,请你解释一下它是如何工作的,我怎样才能得到我需要的东西.提前致谢!
MrF*_*ick 14
我建议你考虑将可选名称值传递给这些函数.我这样说是因为看起来你真的想在最终结果中使用这个名字作为标签.所以变量本身并不像其名称那么重要.你可以做到
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"
Run Code Online (Sandbox Code Playgroud)
这样,如果您最终得到一些奇怪的变量名称以及为结果提供更好的名称,那么您至少可以选择.默认情况下,它可以执行您想要的操作,而无需使用name参数.