R 프로그래밍 3 - R 문법 기초2 연산자 와 조건문(if, else if, ifelse)
오늘은 R 문법에서 연산자, 조건문에 대해서 알아보겠습니다.
1. 연산자
- 산술연산자
a <- 1+2 #더하기
b <- 2-1 #빼기
c <- 3*2 #곱하기
d <- 6/3 #나누기
e <- 2^2 #거듭제곱
f <- 27 %/% 4 #나눗셈정수
g <- 27 %% 4 #나눗셈나머지
R에서 기본으로 제공되는 산술연산자는 다른 프로그래밍 언어와 비슷합니다.
- 논리연산자
연산자 | 기능 |
== | 같다. |
!= | 같지않다. |
> | 크다. |
>= | 크거나 같다. |
< | 작다. |
<= | 작거나 같다. |
&& | AND 조건 |
|| | OR 조건 |
논리연산자도 이렇게 구성되어 있습니다.
2. 조건문(if, else if, ifelse)
- if와 else if
if문은 만일 내가 어떠한 조건에 대해서 처리를 해야 할때 쓰는 조건문입니다.
예를 들어 내가 어떤 a라는 변수가 50이상일때 "yes"라는 텍스트를 출력해야 한다고 가정해봅시다.
여기서
조건: a라는 변수가 50이상일때
연산: "yes"라는 텍스트를 출력
이런 작업을 할때 조건문이 적당할 수 있습니다.
# 기본적으로 이런식으로 되어있다.
if(조건){
연산
} else {
연산
}
# if 조건은 여러개 쓸때는 else if를 활용한다.
if(조건) {
연산
} else if(조건) {
연산
} else {
연산
}
기본적인 문법은 이렇게 되어있습니다.
예시로 알아볼까요?
x가 5보다 크면 yes를 출력하고 5이하면 no를 출력하는 if문이 있다고 가정해봅시다.
x <- 5
if(x >= 5) {
print("yes")
} else {
print("no")
}
x 가 5일때 출력결과는 이렇게 나올 것 입니다.
이번엔 아래예제로 하나 더 알아보겠습니다.
1. x가 5 이하고 3이상인경우 "yes" 출력
2. x가 1 이상이고 2이하면 "soso" 출력
3. x가 위의 경우가 아닌경우 "no" 출력
x <- 5
if(x <= 5 && x >= 3) {
print("yes")
} else if (x <= 1 && x >= 2){
print("soso")
} else {
print("no")
}
x 가 5일때 출력결과는 이렇게 나올 것 입니다.
&&를 활용해서 이상 이하가 같은 레벨의 조건안에 있을때 이런식으로 처리할 수 있습니다.
- ifelse
ifelse는 if문을 좀 간결하게 사용할때 + 벡터단위로 연산이 필요할때 사용됩니다.
#하나의 조건을 활용할때
ifelse (조건, 조건을 만족했을시 값, 조건을 불만족 했을 시 값)
#세가지 이상의 조건을 활용할때
ifelse (조건1, 조건1을 만족했을시 값,
ifelse(조건2, 조건2을 만족했을시 값,
ifelse(조건3, 조건3을 만족했을시 값, 조건을 불만족 했을 시 값)))
예시를 들어봅시다.
1. 10,20,30,50,70,80,90,100으로 이루어진 시험점수 벡터가 있다고 가정
2. 시험의 합격점수는 50점임
3. 시험점수 벡터를 이용하여 "합격" 과 "불합격" 으로 벡터를 만들고 싶음
이 경우에 if문을 활용한다면 리스트, 반복문, if문등 매우 귀찮은 작업들을 해줘야 합니다.
이렇게 벡터단위로 조건 연산을 처리할때는 ifelse가 매우 유용합니다.
ifelse로 위의 조건을 처리
#시험점수 벡터
grade <- c(10,20,30,50,70,80,90,100)
#ifelse를 활용한 합격여부벡터
is_pass <- ifelse (grade >= 50, '합격', '불합격')
print(is_pass)
출력결과
다른 예시를 들어보겠습니다.
1. 10,20,30,50,70,80,90,100으로 이루어진 시험점수 벡터가 있다고 가정
2. 시험의 합격점수는 50점임
3. 90점 이상에게 장학금을 주고싶음
3. 시험점수 벡터를 이용하여 "합격" 과 "불합격"과 "장학금" 을 벡터로 만들고 싶음
이경우 아까보다 조건이 1개 더 많아졌죠?
이랬을 때 조건을 불만족 했을때 넣는 값 자리에 ifelse를 하나 더 넣어주면됩니다.
#시험점수 벡터
grade <- c(10,20,30,50,70,80,90,100)
#ifelse를 활용한 합격여부벡터
is_pass <- ifelse (grade >= 90, '장학금',
ifelse(grade >= 50, '합격','불합격'))
print(is_pass)
마치며
오늘은 R 프로그래밍에서 연산자와 조건문에 대해서 알아봤습니다.
다음엔 반복문과 함수에 대해서 알아보도록 하겠습니다.