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
我正在尝试通过 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