R 非标准评估:将变量的名称作为参数传递给函数,并让函数为其赋值

R nonstandard evaluation: pass the name of a variable as a parameter to a function and have the function assign a value to it

我确定这在某处得到了回答,但无法找到。 Programming with dplyr也没有给出答案

我需要将变量名作为参数传递给函数,并让函数为其赋值。

assign_x <- function(xf = x){
  xf <- 5
}
rm(x)
assign_x(x)
x

用例:

我想为 odbc::dbConnect 编写一个包装器,我在其中检查连接是否已经有效,并在需要时回收连接。有时,如果查询挂起,我需要断开连接然后重新连接以使连接正常工作。

使用 parent.frame() 在调用者的环境中分配。

assign_x <- function(xf = 'x', value = 5){
  x <- deparse(substitute(xf))
  assign(x, value, envir = parent.frame())
}

rm(x)

Warning message:
In rm(x) : object 'x' not found

assign_x(x)
x
#[1] 5

assign_x(y, pi)
y
#[1] 3.141593