Programming/R
[R기초] 조건문 & 반복문
aram
2023. 7. 27. 15:33
function() 사용자 정의 함수
함수명 <- function(인수|입력값) {
계산식
return(계산결과 반환값)
}
- 함수 : function | method | procedure | module
- 인수|입력값 == 파라미터, 인자, 매개변수
if 구문
if(조건식1) {
문장1 : 조건식1의 결과가 T인 경우 수행 문장
} else if (조건식2) {
문장2 : 조건식1의 결과가 F & 조건식2의 결과가 T인 경우 수행 문장
}
....
else {
모든 if, else if 의 결과가 F인 경우 수행되는 문장
}
- 조건문 내부에 문장이 한 개인 경우 {} 생략 가능
# Q. 입력된 숫자가 0보다 크면 "양수", 0보다 작으면 "음수", 0이면 0을 리턴. 함수로 작성
f2 <- function(x){
if(x>0)
return("양수")
else if(x==0)
return(0)
else
return("음수")
}
f2(0) #0
f2(100) #"양수"
f2(-20) #"음수"
#소문자, 대문자, 숫자인 경우 출력 > ASCii 코드 기준이라서 하나만 입력했을 때 가능
ch = "한글"
if(ch >= "A" & ch <= "Z") {"대문자" #'A' = 65
}else if(ch >= 'a' & ch <= 'z') {"소문자" #'a' = 97
}else if(ch >= '0' & ch <= '9') {"숫자" #'0' = 48
}else {'기타문자'}
- strtoi() : 문자열을 정수형으로 변환.
- 16L : 16진수코드값 - 16진수로 인식 >> 10진수로 변환하여 출력
- charToRaw() : ascii 코드값을 16진수로 반환
charToRaw('A') #41 : 16진수 값
strtoi(charToRaw('A'), 16L) #65 : 10진수로 출력
ifelse(조건문, 참, 거짓) 구문
- 조건연산자
# Q. 점수가 60점 이상이면 합격, 아니면 불합격
score = 50
ifelse(score >= 60, "합격", "불합격") #"불합격"
for 반복문
- for(변수 in 객체) {실행문장}
# Q. 1~100 중에 짝수의 합만 출력
# A1
hap = 0
for (i in c(1:100)){
if (i %% 2 == 0)
hap = hap + i
}
print(hap) #2550
# A2 : i변수가 2~100 중 2씩 증가해서 변경
hap = 0
for (i in seq(2, 100, 2)){
hap = hap + i
}
print(hap) #2550
- next : 반복문의 처음으로 제어 이동(continue와 동일한 기능)
hap = 0
for (i in c(1:100)){
if (i %% 2 == 1) next
hap = hap + i
}
print(hap) #2550
- break : 반복문 중지
# 1~100까지의 합을 구하는 중 100이 넘는 숫자 출력하기
hap = 0
for (i in c(1:100)){
hap = hap + i
if (hap > 100) break
}
cat(hap, i) #105 14
- for문의 조건이 2개 이상일 때,
- | == or
- & == and
# Q. 1~100 사이의 중에서 2의 배수도 아니고 3의 배수도 아닌 숫자의 합
hap = 0
for (i in c(1:100)){
# if(i%%2==0) next
# else if(i%%3==0) next
# else hap = hap + i
if(i%%2!=0 & i%%3!=0) hap = hap + i
}
print(hap) #1633
while 반복문
- while(조건문) {실행문장} : 조건문의 결과가 참인 경우만 반복문 수행
# 1~100까지의 합을 구하는 중 100이 넘는 숫자 출력하기
i <- 0
hap <- 0
while (hap<100) {
i <- i + 1
hap = hap + i
}
cat(hap, i) #105 14 >> 정답
i <- 0
hap <- 0
while (hap<100) {
hap = hap + i
i <- i + 1
}
cat(hap, i) #105 15 >> i를 한 번 더 더하고 나오기 때문에 +1이 됨
repeat 반복문
- repeat {실행문장} : 무한 루프
- break로 반복문을 빠져나오는 조건 필수
## Q. 500, 100, 50, 10 동전이 있다. 금액을 입력받아 동전으로 변경하는 함수 chgcoin 구현하라.
# 단, 동전의 개수는 최소한으로 한다.
# 벡터 객체로 500, 100, 50, 10 tjfwjd
# 금액 : 2580
# 500원 동전 : 5개
# 100원 동전 : 0개
# 50원 동전 : 1개
# 10원 동전 : 3개
##반복문x
chgcoin <- function(x){
cat("금액 :", x ,"\n")
a = x %/% 500
cat("500원 동전 :", a, "개\n")
b = (x %% 500) %/% 100
cat("100원 동전 :", b, "개\n")
c = (x %% 100) %/% 50
cat("50원 동전 :", c, "개\n")
d = (x %% 50) %/% 10
cat("10원 동전 :", d, "개")
}
## repeat
chgcoin <- function(x){
cat("금액 :", x ,"\n")
coin <- c(500, 100, 50, 10)
i <- 1
repeat {
cat(coin[i], "원 동전 :", x%/%coin[i], "개\n")
x <- x %% coin[i]
if(x <= 0) break
i <- i+1
}
}
chgcoin(2580)
* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.
728x90