코딩초보 김씨

[R] 조건문, 반복문, 함수 본문

R

[R] 조건문, 반복문, 함수

초보김씨 2021. 6. 18. 13:24

1. 조건문

※ else는 반드시 if문의 코드블록이 끝나는 부분에 있는 }와 같은 줄에 작성해야 함 ※

1) if-else문의 기본 문법

if(비교 조건) {
 조건이 참일 때 실행할 명령문(들)
} else {
 조건이 거짓 일 때 실행할 명령문(들)
}

 

2) 다중 if-else 문

if (score>90)
{grade <- 'A'
} else if (score>80){
  grade <- 'B'
} else if(score>70){
  grade <- 'C'
}else if (score>60){
  grade <- 'D'
}else{
  grade <- 'F'
}

print(grade)

 

3) ifelse 문

c <- ifelse(a>b, a, b)
print(c)

 


 

2. 반복문 (for문, while문)

 ---------------------------------------- for 문 -----------------------------------------

1) for문의 기본 문법

for (반복 변수 in 반복 범위) {
 반복할 명령문(들)
}

  (예시 1. 간단 기초)

for(i in 6:10) {
 print(i)
}

  (출력 결과)

 

  (예시 2. iris에서 꽃잎의 길이에 따른 분류 작업)

# iris의 행의 수
nrow <- nrow(iris)

# 비어있는 벡터 선언
mylabel <- c()

# 꽃잎의 길이에 따라 레이블 결정
for(i in 1:nrow){
  if(iris$Petal.Length[i]<=1.6){
    mylabel[i] <- 'L'
  }else if (iris$Petal.Length[i]>=5.1){
    mylabel[i] <- 'H'
  }else{
    mylabel[i] <- 'M'
  }
}

# 레이블 출력
print(mylabel)

# 꽃잎의 길이와 레이블 결합
newds <- data.frame(iris$Petal.Length, mylabel)

# 새로운 데이터셋 출력
head(newds)

  (출력 결과)

2) for문 조건에 따른 제어 : break, next

  (1) break : 특정 조건을 만족하면 반복문을 벗어남

    (예시. 1부터 10까지의 합을 계산하는데, i가 5 이상이면 break)

sum <- 0
for(i in 1:10) {
  sum <- sum + i
  if (i>=5) break
}
sum

  (출력 결과)

 

  (2) next : 특정 조건이 성립하면 뒤는 무시하고 처음으로 돌아감

    (예시. 1부터 10까지의 합을 계산하는데, i가 5 이상이면 break)

sum <- 0
for(i in 1:10) {
  if (i%%2==0) next
  sum <- sum + i
}
sum

  (출력 결과)

---------------------------------------- while 문 -----------------------------------------

3) while문의 기본 문법

while (비교조건) {
 반복할 명령문(들)
}

  (예시. 1부터 100까지의 합계 계산)

# 빈 객체 생성
sum <- 0

# i 지정
i <- 1

while(i <=100) {
  sum <- sum + i   # sum에 i 값을 누적
  i <- i + 1       # i 값을 1 증가시킴
}
print(sum)

  (출력 결과)

 


 

3. apply() 함수

 : 반복 작업의 대상이 매트릭스나 데이터프레임의 행(row) 또는 열 (column)인 경우 사용

apply(데이터셋, 행/열방향 지정, 적용 함수)

  (예시. iris dataset 행/열방향으로 평균값 계산)

apply(iris[,1:4], 1, mean) # row 방향으로 함수 적용
apply(iris[,1:4], 2, mean) # col 방향으로 함수 적용

 


 

4. 사용자 정의 함수

1) 사용자 정의 함수의 기본 문법

함수명 <- function(매개변수 목록) {
 실행할 명령문(들)
 return(함수의 실행 결과)
}

 

2) 매개변수에 초기값 설정하기

  (예시)

mydiv <- function(x,y=2) {
 result <- x/y
 return(result)
}

# 매개변수 이름과 매개변수값을 쌍으로 입력
mydiv(x=10,y=3)

# 매개변수값만 입력
mydiv(10,3) 

# x에 대한 값만 입력(y 값이 생략됨)
mydiv(10) 

  (출력 결과)

 

3) 반환하는 결과값이 여러 개일 때

  (예시. 합과 곱 계산)

myfunc <- function(x,y) {
 val.sum <- x+y
 val.mul <- x*y
 return(list(sum=val.sum, mul=val.mul)) 
}

result <- myfunc(5,8)
s <- result$sum
m <- result$mul
cat('5+8=', s, '\n')
cat('5*8=', m, '\n')

  (출력 결과)

 

★★ cat 함수 ★★

cat 함수는 개행을 기본으로 하지 않아서 개행을 해주려면 '\n' 을 추가해주어야 함

# print 함수
print(1,2)
[1] 1

# cat 함수
cat(1,2,'\n')
[1] 1 2

 

Comments