본문 바로가기
R

[R] assign(객체 생성), get(변수 불러오기)

by rubyda 2021. 4. 12.
728x90

 

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.pathstr_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