R: Создать глобальную переменную с именем входа функции - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать глобальную переменную с помощью функции в R:

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

если я наберу команду

f(x,3)

Я получаю глобальную переменную с именем «name» со значением 3. Однако я хочу, чтобы имя переменной было «x» вместо «name»

Кто-нибудь знает, как решить эту проблему? :)

Редактировать: Это упрощенная и чрезвычайно упрощенная версия моей проблемы. Я знаю, что есть команда assign () или оператор '<-'-, оба делают то же самое. </p>

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете написать эту функцию, чтобы принимать строку, а затем назначать глобально (стандартная оценка). Вы также не можете использовать строку и просто передать имя (нестандартная оценка). 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
...