Глобальні змінні в R


151

Я замислююся над посібниками, я хотів запитати у спільноти: Як ми можемо встановити глобальні змінні всередині функції?

Відповіді:


174

Як відповідь Крістіана з assign()шоу, існує спосіб призначення в глобальному середовищі. Більш простий, коротший (але не кращий ... палиця з присвоєнням) спосіб - це використовувати <<-оператор, тобто

    a <<- "new" 

всередині функції.


41
Цей підхід насправді не економить у глобальному середовищі, а натомість у батьківській області. Іноді батьківська область буде такою ж, як у глобальному середовищі, хоча в деяких випадках з великою кількістю вкладених функцій вона не буде.
LunaticSoul

5
Чому assignвіддають перевагу <<-?
Яша

4
@Jasha здійснить <<-пошук по ланцюжку корпусів до глобального середовища та призначить першу відповідну змінну, яку він знайде. Гіпотетично, якщо у вас функція f()вкладена в закриття g()і aіснує в g(), тоді використання a <<-in f()призначатиметься aв g(), а не в глобальне середовище. Однак, часто цього ви хочете.
Боб

93

Я знайшов рішення, як встановити глобальну змінну в розміщенні списку розсилки за допомогою призначення :

a <- "old"
test <- function () {
   assign("a", "new", envir = .GlobalEnv)
}
test()
a  # display the new value

1
дивіться також загальноприйнятий відповідь на цьому пості: stackoverflow.com/questions/3969852 / ... для поновлення dataframes в функції
user1420372
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.