변수명을 문자열 형식으로 자유롭게 다루기 - get과 assign
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_D
에 c(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