R에서의 assign함수와 get함수에 대해 알아보도록 하겠습니다.
assign 함수는 객체, 즉 변수를 생성할때 사용하는 함수입니다. 어떠한 경우 assign함수를 유용하게 사용할 수 있을까요??
다음과 같은 경로에 폴더가 여러개 존재하고, 이 폴더안에는 또 여러개의 데이터들이 존재한다고 합니다. 모든 데이터를 하나씩 불러오기에는 정말 무리가 있어 보이죠?? 이러한 경우 우리는 assingn함수를 활용할 수 있습니다. 한번 해보도록 합시다.
# 경로 설정
setwd("/Users/seominji/Desktop/Unstruct_DA/A_DeviceMotion_data")
d<-getwd()
fls <-dir(d,recursive = TRUE)
먼저 다음과 같이 데이터가 들어있는 경로를 설정 후, dir함수를 사용하면 그 경로에 들어있는 모든 데이터들의 파일명을 불러오게 됩니다. 파일명만 불러오기 때문에 데이터도 읽어오는 작업을 따로 해야 합니다.
# 객체 생성
for(f in fls){
a<- file.path(str_c(d,"/",f))
temp<- read.csv(a)
assign(f,temp)
}
먼저 코드는 다음과 같습니다. 먼저 file.path 와 str_c함수를 사용해서 모든 데이터에 관한 경로를 생성해줍니다. 그 후 read_csv를 사용해서 데이터를 불러온 후 temp에 저장해줍니다.
자 이제 각각의 데이터의 객체, 즉 이름을 붙여주는 작업이 필요한데, 그 때 사용되는 함수가 바로 assign입니다. assign은 앞에는 객체명, 뒤에는 객체에 담을 내용이 들어가게 됩니다. 따라서 fls안에 들어있는 f(데이터 명), temp(실제 데이터 내용)을 넣어주게 되는 것입니다.
이렇게 생성한 객체는 Enviroment창에서 확인할 수 있습니다.
이렇게 생성한 객체들은 get함수를 사용해서 불러와야 합니다. 코드는 다음과 같습니다. get 함수 안에 객체명을 넣어줘야 합니다.
get("dws_1/sub_1.csv")
다음과 같이 객체의 해당하는 데이터를 불러오게 됩니다.
'R' 카테고리의 다른 글
[R] ggplot2: facet_wrap(집단별로 분할하여 시각화 하기) (0) | 2021.09.01 |
---|---|
[R] with 함수 (0) | 2021.04.19 |
[R] gregexpr, regmatches(패턴 추출) (0) | 2021.04.12 |
[R] stringr 패키지 함수 (0) | 2021.03.08 |
[R] paste() 와 file.path() 비교 (0) | 2021.03.06 |