Ответы:
Как показывает ответ Кристиана с assign()
указаниями, в глобальной среде существует способ назначения. Проще, короче (но не лучше ... придерживаться назначения) использовать <<-
оператор, т.е.
a <<- "new"
внутри функции.
assign
предпочтительнее <<-
?
<<-
будет искать цепочку вложений вплоть до глобальной среды и присваивать первой соответствующей ей переменной. Гипотетически, если у вас есть функция, f()
вложенная в замыкание g()
и a
существующая в g()
, то использование a <<-
in f()
будет присваивать a
in g()
, а не глобальной среде. Часто это то, что вы хотите, однако.
Я нашел решение о том, как установить глобальную переменную в списке рассылки с помощью assign :
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value