R에서 데이터를 다루면서 어쩌면 다음과 같은 경험을 해보신 적이 있으실 겁니다.

변수명이 weather_Jeju, weather_Seoul, weather_Busan, ... 으로 되어있고, 우리는 이 데이터에 같은 처리를 해주고 싶습니다. 하지만 각 변수마다 같은 코드를 반복하여 작성하게 되면 코드가 너무 길어지게 되죠. . .

이런 경우에 변수명을 문자열 형식으로 자유롭게 가져오고 다시 할당해줄 때 사용할 수 있는 R 함수가 있는데, 바로 get()assign()입니다. 이 두 함수는 R base에 있는 함수로 따로 패키지 설치 없이 사용할 수 있습니다.


get() - 문자열 형식으로 되어있는 변수 불러오기

다음과 같이 3개의 변수가 있다고 가정해봅시다.

data_A <- 1:5
data_B <- 11:15
data_C <- 21:25

get() 함수를 사용하는 법은 간단합니다. 다음과 같이 함수 argument로 “문자열 형태의 변수명”을 넣어주면 끝입니다.

get("문자열 형태의 변수명")

즉, data_A를 가져오는 방법은 다음과 같습니다.

get("data_A")
## [1] 1 2 3 4 5

또는 변수명이 비슷한 형태를 따른다면 paste() 함수를 활용하여 다음과 같이 반복문에 적용할 수도 있습니다.

for (i in c("A","B","C")) {
  var_name <- paste("data_", i, sep = "")
  
  print(var_name)
  print(get(var_name))
}
## [1] "data_A"
## [1] 1 2 3 4 5
## [1] "data_B"
## [1] 11 12 13 14 15
## [1] "data_C"
## [1] 21 22 23 24 25


assign() - 문자열 형식으로 되어있는 변수에 새로운 값 할당하기

assign()get()과 반대로 문자열 형태로 되어있는 변수에 값을 할당할 때 사용할 수 있으며, 2개의 argument가 필요합니다. 첫 번째 argument에는 “문자열 형태의 변수명”, 두 번째 argument에는 “변수에 넣을 값”을 넣어주면 됩니다.

assign("문자열 형태의 변수명", "변수에 넣을 값")

예를 들어, 새로운 변수 data_Dc(1:5)*5 값을 할당하는 법은 다음과 같습니다.

# data_D <- c(1:5)*5   # 아래와 같은 결과
assign("data_D", c(1:5)*5)
print(data_D)
## [1]  5 10 15 20 25