Ogólnie zmienne globalne to Zło. Podstawową zasadą, dlaczego są złe, jest to, że chcesz zminimalizować połączenia w pakiecie. Te wzajemne połączenia często powodują, że funkcje mają skutki uboczne, tj. Zależy nie tylko od argumentów wejściowych, jaki jest wynik, ale także od wartości niektórych zmiennych globalnych. Zwłaszcza, gdy liczba funkcji rośnie, może być trudno uzyskać prawo, a piekło do debugowania.
Dla zmiennych globalnych w R zobacz ten SO post.
Edytuj w odpowiedzi na komentarz: Alternatywą może być po prostu przekazanie potrzebnych informacji do funkcji, które tego wymagają. Można utworzyć nowy obiekt, który zawiera tę informację:
token_information = list(token1 = "087091287129387",
token2 = "UA2329723")
i wymagają wszystkie funkcje, które potrzebują tych informacji, aby mieć go jako argumentu:
do_stuff = function(arg1, arg2, token)
do_stuff(arg1, arg2, token = token_information)
W ten sposób wynika z kodu informacje o tokenach są potrzebne w funkcji i możesz samodzielnie debugować tę funkcję. Ponadto funkcja nie ma skutków ubocznych, ponieważ jej zachowanie jest w pełni zdeterminowane przez argumenty wejściowe. Typowy skrypt użytkownika wyglądałby tak:
token_info = create_token(token1, token2)
do_stuff(arg1, arg2, token_info)
Mam nadzieję, że to wyjaśni sprawę.
Mógłbyś rozwinąć bardziej od konkretnej sytuacji? Wtedy pomożemy Ci znaleźć alternatywy, najlepiej ... –
http://stackoverflow.com/questions/5526322/examples-of-the-perils-of-globals-in-r-and-stata –