조건문이란?
: 조건문이란 말그대로 지정한 조건에 해당할 때, 코드를 수행하는 구문을 의미합니다. 이를 활용하여 원하는 데이터를 출력 또는 연산할 수 있으며, 조건문 안에 들어가는 값은 논리값으로 입력합니다.
1) if문
: if ( 조건문 : 반환값은 T / F ) {조건을 만족할 때 수행할 코드 }
- 장점 : 문장 출려과 다른 명령어 수행을 할 수 있습니다.
- 단점 : 벡터 연산이 불가하고 하나의 조건에 대해서만 검사가 가능합나다.
조건문은 크게 if문, ifelse문으로 존재합니다. 이때 else는, 조건을 확장시키는 역할을 하게 됩니다.
첫번째 조건이 만족하지 않으면 if 조건문 밖으로 탈출하게 되는데, 이후 else문을 만나게 되면 (즉, 이외의 조건에서) 이때의 코드를 수행하게 됩니다.
if(조건식){ 산술/비교/논리 연산자
실행문1 <- 참
}else{
실행문1 <- 거짓
}
if문 활용 예제) 학점 구하기
score <- scan()
score
if(score >= 90){ # 조건식1
result = "A학점"
}else if(score >= 80){ # 조건식1
result = "B학점"
}else if(score >= 70){ # 조건식2
result = "C학점"
}else if(score >= 60){ # 조건식3
result = "D학점"
}else{
result = "F학점"
}
cat("당신의 학점은 ", result) # 당신의 학점은?
print(result)
2) ifelse문
: ifelse(조건, 참, 거짓) - 3항 연산자 기능, 특정 조건을 통해서 간단히 전처리 할 수 있습니다.
조건을 제시하고 해당할 때의 반환값, 해당하지 않을 때의 반환값을 순서대로 한줄로 구현 가능한 장점이 있습니다.
추가 장점 : 벡터 연산(각 요서별 조건 검사)이 가능하빈다.
단점 : 주어진 값에 따라 yes or no 를 반환해주고, 리턴값만 반환하기 때문에 오직 출력만 가능하고 조건별 수행이 불가합니다.
ifelse문 예제1)
score <- c(78,95,85,65)
score
ifelse(score >= 80, "우수" , "노력")
결과값 : "노력" "우수" "우수" "노력"
3) swich문
swich(비교구문, 실행구문1, 실행구문2, 실행구문3...) 원하는 값을 읽어옵니다.
예제를 통해서 바로 보여드리겠습니다.
① 예제
switch("name", id="hong", pwd="1234", age=25, name="홍길동") 결과값 : 홍길동
switch("pwd", id="hong", pwd="1234", age=25, name="홍길동") 결과값 : 1234
② 예제
empname <- scan(what = "")
empname - kang 입력
switch(empname, hong=250, lee=350, kim=200, kang=400)
결과값 : 400
4) which 문
- which()의 괄호내의 조건에 해당하는 위치(인텍스)를 출력합니다.
- 벡터에서 사용 -> index 값 리턴
예제 ①
name <- c("kim" , "lee" , "choi" , "park")
which(name == "choi")
결과값 : 3(index) <3번째 자리>
예제 ②
- 데이터프레임에서 사용 (서로 다른 자료형)
no <- c(1:5) # 1~5
name <- c("홍길동" , "이순신" , "강감찬" , "유관순", "김유신")
score <- c(85,78,89,90,74)
exam <- data.frame(학번 = no, 이름 = name, 성적 = score)
exam
결과값)
학번 이름 성적
1 1 홍길동 85
2 2 이순신 78
3 3 강감찬 89
4 4 유관순 90
5 5 김유신 74
which(exam$이름 == "유관순") 결과값 = 4 <4번째 저장>
exam[4,]
결과값)
학번 이름 성적
4 유관순 90
'빅데이터 > R' 카테고리의 다른 글
[R] 사용자 정의 함수 (0) | 2020.06.30 |
---|---|
[R] 반복문 (for 문, while문) (0) | 2020.06.30 |
[R] 연산자 (0) | 2020.06.27 |
[R] 데이터 출력 , 저장하기 (0) | 2020.06.27 |
[R] 데이터 입력 (0) | 2020.06.25 |