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