Я пытаюсь сохранить переменную из функции в глобальной среде, но ни одно из найденных мной решений SO post или different SO post не работало для меня. Это очень упрощенный пример, иллюстрирующий мою проблему. Я не могу просто использовать <<-
, чтобы сделать v
глобальным, потому что моя фактическая функция создает несколько десятков переменных.хранить переменные от функции в глобальной среде
Код (main_file.R)
source("function_me.R")
#environment(doGlobalThing) <-parent.frame(2) #didnt work
doGlobalThing()
v #cant get to this var from the global environment
Код (function_me.R)
doGlobalThing<-function(){
#eval(v<-'hi',env=parent.frame(2)) #tried this, didnt work
v<-'hi'
}
Не работайте с дизайном языка. Изучите функциональное программирование. – Roland
@Roland. Можете ли вы объяснить (кратко), почему моя идея создания нового набора глобальных переменных неверна в глобальной глобальной среде EMPTY, основанной на некоторых принципах функционального программирования? – Rilcon42
Нет абсолютно никакого преимущества в том, чтобы делать это, возвращая то, что вам нужно от функции, например, в списке. Однако, как вы заметили, это создает для вас бремя, что вы должны помнить, что ваша функция имеет эффекты сайта и гарантирует, что это не создает проблем. И, конечно же, это означает, что вы не можете действительно передавать свой код другим или легко использовать его. Единственная ситуация, когда это может иметь смысл, - это попытаться назначить по ссылке и изменить на месте, но тогда вы должны сделать это в другой среде, а не в глобальной (или использовать ссылочные классы). – Roland