[R] 반복문 While & Repeat (ft. RData 저장)

DongGyu Jung·2021년 10월 1일
0

개인적으로 프로그래밍을 공부하면서 느낀 부분은
간단하면서 가장 많이 쓰이는 부분은 조건문인 IF문과 반복문인 While문인 것 같다.

간단한만큼 활용할 수 있는 범위가 굉장이 넓고 다양하게 쓰일 수 있다.
따라서 시작하는 법과 끝내는 법만 잘 숙지한다면 보다 많은 경우에 활용할 수 있을 것이다.

우선 필자는 R보다
파이썬을 먼저 배워서인지 처음엔 적응이 잘 안되었지만
이번 글에서 설명할 R 에서의 While문Repeat문
파이썬While문While True문이라고 생각하면 될 것 같다.

미리 간단하게 결론부터 말하자면
while문은 "x값이 y가 될 때까지 반복해!!"
repeat문은 "break 될 때까지 반복해!!" 의 모습이다.
복잡하고 이해하기 힘든 부분은 아니기에 간단한 예시와 함께 짧게 설명하려 한다.


While문

특정한 값이 어느 수준까지 다다를 때까지 반복되는 구문

우선 예시부터 살펴보자.

sumNumber <- 1
while(sumNumber <= 10) { 
  i <- sample(1:5, 1) 
  cat(sumNumber, i,"\n")
  sumNumber <- sumNumber+1
} 

1 4 
2 4 
3 3 
4 4 
5 4 
6 5 
7 5 
8 5 
9 5 
10 5 

우선 while문을 시작하기 전 지정한 특수한 값 sumNumber1이라 지정해주고
이 값이 "10보다 작거나 같을 때까지"
즉, 10이 될 때까지 내부에 있는 코드들을 반복적으로 수행하게끔 한다.

1이였던 값이 10이 되기 위해서
반복 코드 내부에 이 값이 증가하게끔 만드는 코드필수적이라고 할 수 있다.
만약 이 코드가 없을 경우,
반복될 코드는 끝나지 않는 무한루프(Loop)에 빠지게 된다.

물론 증가하는 것을 기준으로 할 수도 있겠지만
감소하는 것 또한 기준으로도 할 수 있으니
기준은 각자의 상황과 효용에 따라 적절하게 설정하면 된다.


Repeat문

한 조건에 의해 Break명령을 할 때까지 반복하는 구문
(물론 Break는 위 While문에서도 사용할 수 있지만 통상적으로 repeat문에서 많이 사용된다.)

위 while문에서 들었던 예시 코드와 같은 내용의 코드를
repeat문으로 변환해보겠다.

sumNumber <- 1
repeat { 
  i <- sample(1:5, 1) 
  cat(sumNumber, i,"\n")
  sumNumber <- sumNumber+1
  if(sumNumber > 10){
  	break;
  }
} 

1 3 
2 4 
3 2 
4 5 
5 2 
6 1 
7 3 
8 3 
9 5 
10 3 

우선 while문과 동일한 점은
해당 구문을 시작하기 전에 이 구문을 종료시킬 기준이 되는 값을 미리 지정해준다는 점이고,
증가시키거나 감소시키는 등 해당 기준값을 조정하는 코드가 있는 점도 동일하다.

다른 점이라고 한다면
While은 시작 지점에 While 옆에 반복 종료 조건문을 걸었다면
Repeat코드 내부에 반복 종료 조건문이 별도로 작성하여 사용한다.



이렇게 간단하게 While문과 Repeat문에 알아보았다.
개인적으로 너무나도 짧은 글이 된 것 같아
짧지만 하나의 또 다른 알고있으면 쓸만한 정보를 적어볼까 한다.

💡 .Rdata 파일생성 과 load() 함수

R로 크롤링을 할 때 요긴하게 쓰던 방법인데
별도로 R파일을 생성해
문자열이나 유효한 값을 변수에 담고 여러 사용자 정의 함수들을 미리 정의해놓은 다음,
RData 파일로 저장하여
본 작업을 수행하는 R 파일에서 해당 RData 파일을 Load하여 사용하는 것이다.

이를 통해 작업파일에서는 변수나 함수 선언으로 불필요하고 지저분한 코드의 모습이 아닌
작업 실행 코드들만 깔끔하게 사용할 수 있다.

사용하는 방법을 설명하기 앞서,
현재 내 작업 Script에 변수 선언 현황을 알아보는 것이 좋다.

# 선언되었던 변수명 조회
ls()
length(ls())# 선언 변수 갯수

#개인적인 R파일에서 발췌
[1] "a"              "addr"           "API_key"        "b"              "bar_data"      
[6] "bar_x"          "bus_No"         "busRouteId"     "calc"           "car_cor"       
[11] "cen"   ........

# 선언 했던 변수 삭제(remove) 및 초기화
rm(list=ls())
ls()

character(0)
*rm()을 하게되면 `Environment` 영역이 비워지는 것을 확인할 수 있다.

  • rm()을 통해 삭제를 하더라도 character(0) 상태로 저장은 된다..ㅎ

어쨋든, 위에 있는 rm()은 무시하고
ls()를 통해 어떤 변수들이 선언되었는지 확인했다면
저장으로 넘어가자.

저장에는 두 가지의 방법이 있다

# 첫 번째 방법 : save()
# list를 저장하기
save(list=ls(),file="~.RData")

# 두 번째 방법 : save.image()
# 작업 Script 보이는 상태 그대로 모든 부분 저장
# 단, Script R 파일 자체가 RData 파일로 변환되니 주의
save.image(file = "~.RData")


## 불러오기
# 두 가지 저장 방법으로 저장한 파일 모두 가능
load("~.RData")

이렇게 불러온 변수들은
load()한 Script 내에서 그냥 사용할 수 있다.

예를 들어,

##선언한 변수 저장
a <- 10
save(list=ls(),file="C:/Test/a.RData")

# 다른 Script 상황
load("C:/Test/a.RData")

b <- 20

cat(a+b)

30

이렇게 간편하게 사용할 수 있다.
(함수도 동일하게 사용가능하니 요긴하게 쓰일 수 밖에 없는 것 같다.)

0개의 댓글