get 함수로 문자를 변수로 인식시키기
데이터 전처리를 하다보면 문자값을 변수로 인식시켜야 할 때가 있습니다.
예를 들면 x_test 라는 변수에 c(1, 2, 3) 을 할당하고 x_test를 실행하면 1 2 3이 나옵니다.
x_test <- c(1, 2, 3) x_test |
이때 get 함수를 이용해서 문자인 "x_test" 를 이용해서 c(1, 2, 3)이 나오게 해봅시다.
# get("문자값") get("x_test") |
위에서 보듯 x_test와 "x_test" 는 의미하는 바가 다릅니다. x_test는 객체(object)로 인식되며 "x_test"는 문자값일 뿐입니다. 그래서 get함수의 기능은 "x_test"(문자값)를 x_test(객체)로 인식시켜주는 역할입니다.
주의할 점은 get함수 인자로 반드시 문자형으로 입력해주어야 합니다~ 꼭 따옴표를 붙이세요.
get 함수는 assign 함수와 반대인 것을 알 수 있습니다.
이 전 포스팅에서 보듯 assign 은 문자형에 어떤 값을 할당하는 함수이고
get 함수는 어떤 문자값이 이미 변수로 생성되어있는 이름과 같다면 문자를 해당하는 변수 내용을 출력합니다.
# x라는 변수명에 c(10, 20, 30, 40) 을 할당함 assign("x", c(10, 20, 30, 40)) # x라는 변수명을 문자값을 이용해 반환 get("x") |
반복문을 이용해서 값 저장(assign)과 출력(get)을 함께 사용하여 아래처럼 나타낼 수 있습니다.
# num이라는 변수명에 데이터 저장 num <- c('one','two','three','four','five','six','seven','eight','nine','ten') # assign함수로 값을 저장하고, get함수로 값을 출력 for(i in 1:10){ assign(paste0('a_',i),num[i]) # 변수명 a_1, a_2, ..., a_10에 값을 저장 x <- get(paste0("a_",i)) # 값을 출력 print(x) } |
만약 여러 변수를 한꺼번에 출력하고 싶으면 mget 함수를 이용합니다.
mget함수의 출력값 형식은 리스트(list)입니다.
mget함수의 인자는 문자형벡터로 넣어주고 결과를 보면 list형식으로 반환하는 것을 알 수 있습니다.
# mget("문자형벡터") test1 <-c(10,20,30,40,50) test2 <- c(100,200,300) test3 <- c(2002, 2003,2004,2005) # test1, test2, test3 객체를 문자형 벡터로 구성해서 인자로 삽입 mget_test <- mget(c("test1","test2","test3")) mget_test # list의 요소 접근하기 mget_test["test1"] mget_test["test2"] mget_test["test3"] |
이번에는 반복문을 이용해서 값을 각 요소들(test1, test2, test3)의 벡터가 반환되게 만들어봅시다.
# get 을 이용 for(x in 1:3){ pr <- get(paste0("test",1:3)[x]) # get함수로 test1, test2, test3를 출력 print(pr) # 반복문이 한번씩 돌때마다 print함수로 찍힘 } # mget 을 이용 for(x in 1:3){ pr <- mget(paste0("test",1:3)) #mget함수로 pr2<- pr[[paste0('test',1:3)[x]]] print(pr2) } |
위에선 벡터를 예시로 들었지만 데이터프레임, 리스트에도 똑같이 적용할 수 있습니다.
dat라는 데이터프레임을 만들고 xx라는 변수명에 할당합니다.
dat <- data.frame(x=c(1,2,3,4),y=c(5,6,7,8)) assign('xx',dat) get("xx") |
궁금한 점은 댓글로 남겨주세요^^
'데이터 분석 > R 데이터 처리 & 분석' 카테고리의 다른 글
[R] rep 함수 (반복적으로 값 산출하기) (0) | 2022.07.03 |
---|---|
[R] 작업 디렉토리에서 파일 찾기 및 변수 할당하기 (0) | 2021.11.04 |
[R] assign 함수 이용하여 값을 변수에 넣기 (1) | 2021.06.04 |
[R] 엑셀 파일 불러오기와 저장하기 (xls, xlsx) (3) | 2020.12.25 |
[R] 반복문 사용하기 (for, while, break, next) (0) | 2020.10.27 |