Playing with Data/R | Python

R에서 <<- 연산자 의미

아르센 루팽 2018. 6. 7. 10:27
어느 소스를 보다보니 <<- 이런 연산자가 눈에 띄었습니다. 보통 변수에 값을 할당하는 것은 "<-"인데 말이죠. 그냥 추측으로 특정 변수에 대한 메모리 복사가 아닐까하고 추정하였는데. 결과적으로는 그건 아니더라구요.
(대체 메모리 복사는 뭐죠??? ㅡ.ㅡ;;)


그래서 생각난 김에 <<- 연산자에 대해 정리해볼까 합니다.
해당 연산자는 보통 함수 내에서 사용하는 연산자입니다.
함수 내에서 <- 연산자를 이용해서 변수에 값을 할당하면 일반적으로는 함수 내에서만 사용되는 변수로 지정되어 값을 할당하게 됩니다. (일반적으로 지역변수(local variable)라고 하는 형태로 생각하시면 됩니다.) 반면에 <<- 연산자로 값을 할당하면 해당 변수는 전역변수(global variable)처럼 변수가 생성되어서 함수 밖에서도 사용할 수 있는 변수가 됩니다. R에서 사용하는 환경으로 말하면 Global Environment에 해당변수가 생성된다고 보시면 됩니다.


다음의 두 함수를 지정하고, 각각 결과를 보면 쉽게 이해할 수 있을 겁니다.

a <- 10

foo <- function() {
  gVar.b <- a * 10
  return (gVar.b)  
}

a <- 10
foo.2 <- function() {
  gVar.c <<- a * 100
  return(gVar.c)
}

첫 번째 함수를 실행시키면 gVar.b의 결과인 100이 함수 값으로 return되지만, gVar.b를 더 이상 사용할 수 있는 변수가 되지는 않습니다. 반면, 두 번째 함수를 실행시키면 gVar.c의 결과인 1,000이 return되고 gVar.c 변수가 전역변수처럼 계속 사용할 수 있게 됩니다.
반응형