[R] 여러개의 데이터프레임을 리스트로 묶기 (how to combine many DataFrames into a List) : mget()
R 분석과 프로그래밍/R 데이터 전처리 2018. 3. 24. 18:29이번 포스팅에서는
(1) R Environment 상에 존재하는 여러개의 DataFrame 중에서 이름이 특정 조건을 만족하는 DataFrame을 선별하여
: ls(pattern = "xx")
(2) 하나의 List 로 묶는 방법,
: mget()
(3) List로 부터 특정 DataFrame을 Indexing 하는 방법
: list[[1]], or list[["name"]]
에 대해서 소개하겠습니다.
먼저, 이번 포스팅의 예제의 특성 상 Environment 와 Console을 깨끗하게 청소하는 것부터 시작하겠습니다. rm(list=ls()) 로 Environment에 있는 모든 객체를 삭제하고, cat("\014")로 Console을 백지상태로 만들어주었습니다.
# To make an environment, console clear rm(list=ls()) # clearing environment cat("\014") # clearing Console |
객체 이름에 'data_'를 공통으로 포함한 3개의 DataFrame 예제와, 객체 이름에 'file_'을 포함한 3개의 DataFrame 예제를 만들어보겠습니다.
# To make several sample DataFrames data_1 <- data.frame(var1 = c(1, 2), var2 = c(3, 4)) data_2 <- data.frame(var1 = c('a', 'b'), var2 = c('c', 'd')) data_3 <- data.frame(var1 = c(TRUE, TRUE), var2 = c(FALSE, TRUE)) file_1 <- data.frame(var1 = c(1, 2), var2 = c(3, 4)) file_2 <- data.frame(var1 = c('a', 'b'), var2 = c('c', 'd')) file_3 <- data.frame(var1 = c(TRUE, TRUE), var2 = c(FALSE, TRUE)) [DataFrame samples]
|
Environment에 생성된 객체를 확인해보려면 ls() 함수를 사용하면 됩니다. 그리고 특정 문자열을 포함한 객체만을 선별해서 찾아보려면 ls(pattern = "xx") 처럼 pattern = "xx" 를 추가하면 됩니다.
> # To list up all objects in an environment > ls() [1] "data_1" "data_2" "data_3" "file_1" "file_2" "file_3" > > # To list up objects which have a matching 'pattern' in a DataFrame name > ls(pattern = "data_") [1] "data_1" "data_2" "data_3" > ls(pattern = "file_") [1] "file_1" "file_2" "file_3"
|
다음으로, mget() 함수를 사용하여 ls(pattern = "data_"), ls(pattern = "file_"로 각각 선별한 DataFrame 객체들을 2개의 List로 각각 묶어서 생성해보겠습니다.
> # To combine all DataFrame into a List using mget() > list_df_data <- mget(ls(pattern = "data_")) > list_df_data $data_1 var1 var2 1 1 3 2 2 4 $data_2 var1 var2 1 a c 2 b d $data_3 var1 var2 1 TRUE FALSE 2 TRUE TRUE > > list_df_file <- mget(ls(pattern = "file_")) > list_df_file $file_1 var1 var2 1 1 3 2 2 4 $file_2 var1 var2 1 a c 2 b d $file_3 var1 var2 1 TRUE FALSE 2 TRUE TRUE |
마지막으로, List에 묶인 DataFrame을 [[ ]] 을 사용하여 위치(숫자) 혹은 이름으로 Indexing 하는 방법을 아래에 소개합니다.
> # To index one of object in a List using [[ ]] > list_df_data[[1]] # using 'number' var1 var2 1 1 3 2 2 4 > list_df_data["data_1"] # using 'name' $data_1 var1 var2 1 1 3 2 2 4 |
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요.