4

我想知道是否有办法在 R 中传递变量的“名称”。我想要的是使以下函数更通用:

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

我不想要的是一个只有在我要更改的变量被称为“a”时才有效的函数,所以我想知道我是否可以做一些事情,比如将变量名作为参数传递,然后用它调用分配函数姓名。像这样的东西:

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

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

谢谢你的帮助。

4

2 回答 2

1

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

test <- function (varName) {
  assign(deparse(substitute(varName)), "new", envir = .GlobalEnv)
}
于 2013-09-26T19:52:30.567 回答
0

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

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

但是,正如我在评论中所说,我认为这不是解决您问题的正确方法。如果您想就您正在尝试做的事情提出更一般的问题,我敢打赌有一个更“R-ish”的解决方案。

于 2013-09-26T17:27:03.663 回答