# [R] 반복문

## for문

---

- 벡터의 길이만큼 for문이 반복

- for문이 한 번씩 수행될 때마다 반복 범위의 값을 하나씩 가져와 반복 변수에 저장한 뒤 코드 블록 안에 있는 명령문을 실행

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

- 어떤 변수를 계산에 사용하려면 그 변수를 먼저 어떤 값으로든 초기화한 후에 사용해야 한다.

```javascript
nrows <- nrow(iris) # iris 행의 수
mylabel <- c()      # 비어있는 벡터 선언
for( i in 1:nrow){
    if (iris$Petal.Length[i] <= 1.6){
        mylabel[i] <- 'L'
    } else if (ris$Petal.Length[i] >= 5.1){
        mylabel[i] <- 'H'
    } else{
        mylabel[i] <- 'M'
    }
}
print(mylabel)
newds <- data.frame(iris$Petal.Length, mylabel)
head(newds)
```

## **while문**

---

- for문에 비해 사용 빈도가 적기 때문에 문법을 이해하는 수준에서 간단히 학습

- 비교 조건을 만족하는 동안 {} 안의 명령문들을 반복 실행

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

- 영원히 실행되는 반복문을 무한루프(loop)라고 한다.

- 무한루프에 빠지면 컴퓨터의 작동이 멈출 수 있다.

## break와 next

---

**break**

- 반복문을 중단시키는 역할을 한다.

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

**next**

- next 다음에 오는 코드를 실행시키지 않고 다음 루프를 돈다.

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

## **apply() 계열 함수**

---

- apply()함수를 이용하면 처리 속도를 향상시킬 수 있다.

- apply()함수는 매트릭스나데이터프레임에 있는 행들이나 열들을 하나하나 차례로 꺼내어 평균이나 합계 등을 구하는 작업을 수행하고자 할 때 유용합니다.

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

- 데이터셋: 반복 작업을 적용할 대상인 매트릭스나 데이터프레임 이름 입력

- 행/열 방향 지정: 행 방향 작업의 경우 1, 열 방향 작업의 경우 2를 지정

- 적용 함수: 반복 작업의 내용을 알려주는 것으로, R함수이거나 다음 절에서 배울 사용자 정의 함수를 지정

```javascript
apply(iris[, 1:4, 1, mean]
```

For the site tree, see the [root Markdown](https://slashpage.com/yerim-devnote.md).
