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