728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


R에서는 아예조건에 관련된 함수들이 굉장히 많다.

이번장에서 그걸 다룰건 아니고 R에서 프로그래밍을 하는데 필요한 조건문에 대해서 알아보도록하자.

다른 이름으로는 분기문이라고도 불리운다.


if문과 else문과 else if문


x<-25

if(x>0)

  print(paste0(x,'는 양수'))


위의 코드는 x가 양수일때 양수라고 출력하는 코드이다.

여기서 paste0함수는 굉장히 중요한데 괄호속의 두 문자열을 합쳐주는 함수이다.

만약 여기서 if문이 길어져서 한줄안에 다 적을 수 없게 된다면 중괄호를 펼쳐주면 된다.


x<-25

if(x>0){

  print(paste0(x,'는 양수'))

  print('양수는 0보다 큰수')

}


만약 if조건문에 합당하지 않은 경우를 하고 싶다면 else캐이스를 해주면된다.

여기서 중요한건 else케이스의 위치인데 else는 반드시 if케이스의 마지막에 위치해야한다.

그래서 if문이 한줄일때는 약간 사용법이 골때리게된다.


x<--2

if(x>0)

  print(paste0(x,'는 양수')) else

  print(paste0(x,'는 음수'))



else 구문이 반드시 if케이스 마지막에 붙어야 한다는 룰 때문에 한줄씩 쓸 때 else를 if마지막에 붙혀줘야한다.

따라서 if else를 동시에 쓸경우 내용이 한줄일지라도 무조건 괄호를 쓰는게 룰이 되었다.


x<--2

if(x>0){

  print(paste0(x,'는 양수'))

}else{

  print(paste0(x,'는 음수'))

}


만약 if케이스가 여러개가 되야한다면 어떻게 할까?

위의 케이스로 예를들자면 0인 케이스가 있을 것이다.

이는 양수도 음수도 아니므로 따로 처리해 주어야한다.

이를 위한 문법이 바로 else if문법이다. 이 역시 앞부분에 붙혀줘야한다는 룰 때문에 무조건 괄호를 열어줘야한다.


x<-0

if(x>0){

  print(paste0(x,'는 양수'))

}else if(x==0){

  print(paste0(x,'는 양수도 음수도 아님'))

}else{

  print(paste0(x,'는 음수'))

}


이제 x가 0일 경우 0으로 출력이 된다.

참고로 R에서 둘의 동등비교는 =가 아니라 ==이다.

=는 <-과 마찬가지로 오른쪽을 왼쪽에 대입해라는 뜻이라는걸 잊지 말라.


만약 ifelse의 내용이 길지않고 짧게 나타내고 싶다면 ifels라는 함수를 사용해도 무방하다.

이는 다른 언어에서 삼항연산자와 맥락을 같이한다.


x <- '영국인'

print(paste0('나는',ifelse(x=='한국인','한국인','외국인'),'이다.'))


ifelse함수에서 한국인인지 확인하고 한국인이 아니면 외국인을 반환하게된다.

따라서 위의 코드를 실행하면 나는외국인이다.가 출력된다.


switch


switch는 if else의 연장선이라고 할 수있는데 특정 캐이스들이 굉장히 많을 경우 switch문을 사용할 수있다.

단 switch라는 지시자가 존재하는건 아니고 switch라는 함수가 존재하며 우리는 switch함수를 사용하는 방식으로 사용한다.


x <- 'C++'

switch (x,

  'C언어' = print('임베디드에서 자주 씁니다.'),

  'Java' = print('관공서에서 자주 씁니다.'),

  'C++' = print('게임에서 자주 씁니다.'),

  print(paste0(x,'는 뭐하는 언어임?'))

)


위의 코드는 x의 값을 확인하여서 x의 값에 맞춰서 출력하게 된다.

만약 x가 C언어일경우, Java일경우,C++일 경우가 있는데 마지막한놈만 쌍이없다.

이놈은 디폴트 케이스로 어떤 케이스도 아닐때 저게 실행된다.

위의 코드를 이렇게 바꿔보자.


x <- 'R'

switch (x,

  'C언어' = print('임베디드에서 자주 씁니다.'),

  'Java' = print('관공서에서 자주 씁니다.'),

  'C++' = print('게임에서 자주 씁니다.'),

  print(paste0(x,'는 뭐하는 언어임?'))

)


위 코드의 경우 디폴트 케이스가 출력되어 R이 뭐하는 언어인지 물어보게 될것이다.


'Programming > R' 카테고리의 다른 글

[R-10]함수(function)  (0) 2017.11.18
[R-09]반복문  (0) 2017.11.18
[R-07]배열(Array)  (0) 2017.11.18
[R-06]리스트(list)  (0) 2017.11.18
[R-05]데이터 프레임(Data Frame)  (0) 2017.11.18

+ Recent posts