在r中传递变量的“名称”

时间:2013-09-26 16:40:12

标签: r variables pass-by-reference

我想知道是否有办法通过"名称" R中的变量 我想要的是使以下功能更通用:

a <- "old"
test <- function () {
   assign("a", "new", envir = .GlobalEnv)
}
test()
a 

我不想要的是一个仅在我想要更改的变量被调用时才起作用的函数&#34; a&#34;,所以我想知道我是否可以做一些像传递变量名一样的事情参数然后使用该名称调用assign函数。像这样:

a <- "old"
test <- function (varName) {
   assign(varName, "new", envir = .GlobalEnv)
}

test(a) #!!!!! Here !!!!!
a

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果您不想传递变量名称(作为字符),可以使用以下技巧:

test <- function (varName) {
  assign(deparse(substitute(varName)), "new", envir = .GlobalEnv)
}

答案 1 :(得分:0)

将字符串'a'传递给您的函数将起作用。

a <- "old"
test <- function (varName) {
   assign(varName, "new", envir = .GlobalEnv)
}
test('a')
a
# [1] "new"

但是,正如我在评论中所说,我不认为这是解决问题的正确方法。如果你想问一个关于你想要做的事情的更普遍的问题,我打赌有一个更“R-ish”的解决方案。