R:使用函数输入的名称创建一个全局变量

R: Create a global variable with the name of a function's input

我正在尝试通过 R 中的函数创建一个全局变量:

f <- function(name, value) {
  name <<- value
}

如果我输入命令

f(x,3)

我得到一个名为 'name' 的全局变量,其值为 3。但是,我希望变量的名称是 'x' 而不是 'name'

有谁知道,如何解决这个问题? :)

编辑:这是我的问题的精简版本。我知道,有 assign() 命令或 '<-'-operator,两者都做同样的事情。

你可以编写这个函数来接受一个字符串,然后全局赋值(标准评估)。您也可以不使用字符串而只传入名称(非标准评估)。 rlang 使非标准评估方式变得简单,见下文。

install.packages('rlang')    
library(rlang) 

global_assign_se <- function(name, value) {
  assign(name, value, envir = .GlobalEnv)
}
# Here we put quotes around the variable name 
global_assign_se('item_assigned_globally_se', T)
item_assigned_globally_se # true

global_assign_nse <- function(name, value) {
  name <- enquo(name)
  name <- quo_name(name)
  assign(name, value, envir = .GlobalEnv)
}
# Here we don't put quotes around the variable name
global_assign_nse(item_assigned_globally_nse, 'true') 
item_assigned_globally_nse # true