(Ch 6) 반복문
2024. 8. 25. 20:43ㆍ확률 통계/R 데이터 분석
for 문
기본 for문
for(반복 변수 in 반복 범위){
반복할 명령들
}
for(i in 1:5){
print("*")
}
> for(i in 1:5){
+ print("*")
+ }
[1] "*"
[1] "*"
[1] "*"
[1] "*"
[1] "*"
- 위의 예시에서 i는 사용하지 않지만 i 에는 1,2,3,4,5가 차례대로 반복되면서 저장된다.
- for() 문은 { } 사이에 반복할 명령들을 넣는다.
반복 범위에 따른 반복 변수의 값 변화
for(i in 1:5){
print(i)
}
> for(i in 1:5){
+ print(i)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
- 위에서 말한 것 처럼 i에는 순서대로 1,2,3,4,5가 저장된다.
반복 변수를 이용한 구구단 출력
for(i in 1:9){
cat('2 *', i,'=',2*i,'\n')
}
> for(i in 1:9){
+ cat('2 *', i,'=',2*i,'\n')
+ }
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
- cat함수는 여러개의 값을 출력해 주는 함수이다.
- 1~9까지의 숫자를 반복하여서 구구단을 출력해 준다.
for문 안에서 if문의 사용
for(i in 1:10){
if(i%%2==1){
print(i)
}
}
> for(i in 1:10){
+ if(i%%2==1){
+ print(i)
+ }
+ }
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
- %%는 나머지를 보여주기 때문에 나머지가 1인 수, 즉 홀수인 경우에만 if문을 사용하여서 출력하도록 하였다.
1~100까지의 합 출력
sum<-0
for(i in 1:100){
sum<-sum+i
}
sum
> sum<-0
> for(i in 1:100){
+ sum<-sum+i
+ }
> sum
[1] 5050
- 처음에 sum=0으로 만들어주고 sum+i를 sum으로 누적해 주면서 1~100까지의 합을 모두 구해준다.
iris 꽃잎의 길이에 따른 분류 작업하기
- 꽃잎의 길이가 1.6 이하이면 L, 1.7~3.1이면 ML, 3.2 이상 5.0 이하 이면 MH, 5.1 이상이면 H으로 분류하는 작업을 해보자
x<-nrow(iris)
y<-c() #벡터 생성
for(i in 1:x){
if(iris$Petal.Length[i]<=1.6){
y[i]<-'L'
}else if(iris$Petal.Length[i]){
y[i]<-'ML'
}else if(iris$Petal.Length[i]){
y[i]<-'MH'
}else {
y[i]<-'H'
}
}
print(y)
df<-data.frame(iris$Petal.Length,y) #꽃잎의 길이 데이터셋과 만든 y벡터를 합한다.
head(df)
> print(y)
[1] "L" "L" "L" "L" "L" "ML" "L" "L" "L" "L" "L" "L"
[13] "L" "L" "L" "L" "L" "L" "ML" "L" "ML" "L" "L" "ML"
......
> df<-data.frame(iris$Petal.Length,y)
> head(df)
iris.Petal.Length y
1 1.4 L
2 1.4 L
3 1.3 L
4 1.5 L
5 1.4 L
6 1.7 ML
while문
기본 while문
while(조건){
반복할 명령문들
}
sum<-0
i<-0
while(i<=100){
sum<-sum+i
i<-i+1
}
print(sum)
> while(i<=100){
+ sum<-sum+i
+ i<-i+1
+ }
> print(sum)
[1] 5050
- i <=100일 동안만 sum+i 연산을 반복하여서 1~100까지의 숫자의 합을 구해준다.
break와 next
sum<-0
i<-0
while(i<=10){
sum<-sum+i
i<-i+1
if(i>=5) break
}
print(sum)
> print(sum)
[1] 10
- break: 반복문을 종료시키는 역할
- 위의 경우에는 i>=5의 경우에 반복문을 종료시켰기 때문에 1~4까지의 합이 sum에 저장되었다.
sum<-0
for(i in 1:10){
if(i%%2==0) next
sum<-sum+i
}
sum
> for(i in 1:10){
+ if(i%%2==0) next
+ sum<-sum+i
+ }
> sum
[1] 25
- next: next의 이후 구문을 실행하지 않고 넘어간다.
- 위의 경우 i%%2==0인 경우, 즉 짝수인 경우는 넘어가고 홀수인 경우에만 sum에 저장한다.
'확률 통계 > R 데이터 분석' 카테고리의 다른 글
| (Ch8) 조건에 맞는 데이터의 위치 찾기 (1) | 2024.08.26 |
|---|---|
| (Ch 7) apply함수&사용자 정의 함수 (1) | 2024.08.26 |
| (Ch 5) 조건문 (0) | 2024.08.25 |
| (Ch 4) 매트릭스와 데이터프레임 (2) | 2024.08.25 |
| (Ch 3) 변수와 벡터 (6) | 2024.08.18 |