Понять разницу между локальными и глобальными операторами присваивания в R может быть непросто. Вот пример, который должен прояснить ситуацию.
Во-первых, давайте создадим две переменные с именами «global_var» и «local_var» и присвоим им значения «global» и «local» соответственно. Обратите внимание, что мы используем стандартный оператор присваивания «‹-» для обеих переменных.
global_var <- 'global' local_var <- 'local' global_var # RETURNS: 'global' local_var # RETURNS: 'local'
Далее давайте создадим функцию для проверки глобального оператора присваивания («‹‹-»). Внутри этой функции мы присвоим новое значение обеим только что созданным переменным; однако мы будем использовать оператор «‹-» для local_var и оператор «‹‹-» для global_var, чтобы мы могли наблюдать разницу в поведении.
my_function <- function() { global_var <<- 'na' local_var <- 'na' print(global_var) print(local_var) } my_function() # RETURNS: # 'na' # 'na'
Эта функция работает так, как вы ожидаете интуитивно, верно? Далее начинается самое интересное, когда мы снова выводим значения этих переменных.
global_var # RETURNS: 'na' local_var # RETURNS: 'local'
Из этого результата мы можем увидеть разницу в поведении, вызванную разными операторами присваивания. При использовании оператора «‹-» внутри функции его область действия ограничена только той функцией, в которой он находится. С другой стороны, оператор «‹‹-» позволяет редактировать значение переменной за пределами также функционировать.