반복문

- 문장을 반복 실행하는 경우에 사용 

 

FOR문

# for 문 (for loop/statement) 형식
for (<var> in <interval>) { <repeated_work> }

# 설정한 변수 <var>가 지정된 구간 <interval>에서 변하면서 
# 문장 <repeated_work>을 반복실행

 

 

# 반복문; for loop ----
for (i in 1:3) {
    print(i)
}

for (i in c("a", "b", "c")){
    print(i)
}

for(i in 5:3){
    print(i)
}

# 반복문 : 1~1000합 구하기 ----
sss = 0 
for(i in 1:100){
    sss = sss + i
}


## exercise ----
x = 3
for(i in 1:5){
    x = x*2
}

sss = 0
for(i in 100:200){
    sss = sss + i
}

kk = 1
for(i in 1:10){
    kk = kk*i
}
kk == factorial(10)

# 반복문: 정규분포 ----
vec = rnorm(100,7,3)

sum1 = 0 
for(i in 1:length(vec)){
    sum1 = sum1 + vec[i]
}
m = sum1/length(vec)


## exercise ----
vec2 = rnorm(100, 5, 2)

sum2 = 0
for(i in 1:length(vec2)){
    sum2 = sum2 + vec2[i]
}
m2 = sum2/length(vec2)

sum3 = 0
for(i in 1:length(vec2)){
    sum3 = sum3 + vec2[i]^2                    
}
var1 = (sum3 - length(vec2)*m2^2)/(length(vec2)-1)
var1

 

R에서의 반복문은 파이썬에서의 반복문과 조금 다를 뿐 원리는 비슷함. 

 

 

WHILE문

# while문(while loop/statement) 
while(<condition>) { <repeated_work> }

# 반복할 조건 <condition>의 참 거짓을 판별하여
# 참인 경우 문장 <repeated_work>을 반복 실행
# 주어진 조건을 만족하는 동안 무한 반복하기 때문에 예상과 달리 루프에 갇히게 되면 break해야함.
# 반복문: while문 ----
x = 3
while(x<1000){
    x = x*2
}
print(x)

# 결과가 다르다는 걸 느끼기 
# 1
i = 0 
sss = 0
while(i <= 100){
    i = i + 1
    sss = sss + i
}
sss  # 5151

# 2 
i = 0; sss = 0
while(i <= 99){
    i = i + 1
    sss = sss + i
}
sss # 5050

# 3
i = 0; sss = 0
while(i <= 100){
    sss = sss + i
    i = i + 1
}
sss  # 5050

# 100~200합 구하기
i = 100
sss = 0
while(i <= 200){
    sss = sss + i
    i = i + 1
}
sss


# 1부터 10까지의 곱과 factorial 비교
i = 1
sss = 1
while(i <= 10){
    sss = sss*i
    i = i + 1
}
sss == factorial(10)


# example
# 처음으로 합이 100을 넘기는 n값 찾기
n = 0 ; n.sum = 0
while(n.sum <= 100){
    n = n + 1
    n.sum = n.sum + n
}

## practice ----
n = 0
while(n.sum <= 100000){
    n = n + 1
    n.sum = n.sum + n
}

n = 0
n.fac = 1
while(n.fac <= 1000000){
    n = n + 1
    n.fac = n.fac * n
}

 

repeat문

# repeat문 
repeat{<repeated_work>}

# 작업 <repeated_work>을 무한 반복하다가 break 조건을 만족하면 stop
# 반복문: repeat ----
n = 0
sss = 0
repeat{
    n = n + 1
    sss = sss + n
    if (n >= 100) break
}

+ Recent posts