【发布时间】:2014-06-19 15:05:38
【问题描述】:
我试图通过几个函数传递变量,并且在最终函数上我想获取原始变量的名称。但似乎 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 参数,所以,你能解释一下它是如何工作的,我怎样才能得到我需要的东西。提前致谢!
【问题讨论】:
-
很确定“The R-Inferno”涉及到这一点。顺便说一句,我假设您打算用
var_pass在fun2内调用fun1? -
哦,谢谢!是的,我的意思是 fun1(var_pass)。
-
为什么首先需要这个名字。可能有一个更好、更简单的替代方案。
-
好吧,我为 data.frame 做了很多计算,但最后我想访问列表 (my_list$my_var),获取一些与数据帧。可能有一些方法可以做到,我实际上做了我需要的,但它真的很乱。我将变量的名称作为附加列,但是对于大数据集,它确实会减慢进程
-
如果您需要函数内部的数据,只需将其作为输入参数传递。同样,如果您在函数外部需要函数内部的任何内容,请使用 return 参数。这符合您的需求吗?
标签: r variables substitution