[R Programming] 조건문 / 반복문
조건문 / 반복문
if - else
- To test a condition and act on it depending on whether it’s true or false
if(<condition>) {
## do something
}
## Continue with rest of code
if(<condition>) {
## do something
} else {
## do something else
}
- To test a condition and act on it depending on whether it’s true or false
if(<condition1>) {
## do something
} else if(<condition2>) {
## do something different
} else {
## do something different
}
for
- To iterate over the elements of an object (list, vector, etc)
- Take an iterator variable
number <- rnorm(10)
for(i in 1:10) {
print(numbers[i])
}
## [1] -0.9567815
## [1] 1.347491
## [1] -0.3158058
## [1] 0.5960358
## [1] 1.133312
## [1] -0.7085361
## [1] 1.525453
## [1] 1.114152
## [1] -0.1214943
## [1] -0.2898358
- Example 1
x <- c("a", "b", "c", "d")
for(i in 1:4) {
## Print out each element of 'x'
print(x[i])
}
## [1] "a"
## [2] "b"
## [3] "c"
## [4] "d"
- Eaxmple 2
- seq_along() is used to generate an integer sequence based on the length of an object
## Generate a sequence based on lengrth of 'x'
for(i in seq_along(x)) {
print(x[i])
}
## [1] "a"
## [2] "b"
## [3] "c"
## [4] "d"
Nested for loops
- for loops can be nested inside of each other
- matrix(행렬)에서 seq_along을 쓰면 부작용이 일어난다!! → seq_len()
x <- matrix(1:6, 2, 3)
for(i in seq_len(nrow(x))) {
for(j in seq_len(ncol(x))) {
print(x[i, j])
}
}
## [1] 1
## [1] 3
## [1] 5
## [1] 2
## [1] 4
## [1] 6
실습: 구구단 출력하기
- 다음과 같이 구구단 2단부터 9단까지 출력하기
for(i in 2:9) {
for(j in 1:9) {
message(i, " * ", j, " = ", i*j)
}
}
next
- To skip an iteration of a loop
- next 를 만나면 바로 for 문으로 이동하라!!
for(i in 1:100) {
if(i <= 20) {
## Skip the first 20 iterations
next
}
## Do something here
}
실습: next
for(i in 1:10) {
message("i = ", i, " block 1")
if(i <= 2) {
message("i = ", i, " block 2")
next
message("i = ", i, " block 3")
}
message("i = ", i, " block 4")
}
i = 1 block 1
i = 1 block 2
i = 2 block 1
i = 2 block 2
i = 3 block 1
i = 3 block 4
i = 4 block 1
i = 4 block 4
i = 5 block 1
i = 5 block 4
i = 6 block 1
i = 6 block 4
i = 7 block 1
i = 7 block 4
i = 8 block 1
i = 8 block 4
i = 9 block 1
i = 9 block 4
i = 10 block 1
i = 10 block 4
break
- To exit a loop immediately regradless of what iteration the loop may be on
- break 를 만나면 자신이 속해 있는 for 문에서 빠져나와라!!
for(i in 1:100) {
print(i)
if(i > 20) {
## Stop loop after 20 iterations
break
}
}
실습: break
for(i in 1:10) {
message("i = ", i, " block 1")
if(i > 5) {
message("i = ", i, " block 2")
break
message("i = ", i, " block 3")
}#end if
message("i = ", i, " block 4")
}#end for
i = 1 block 1
i = 1 block 4
i = 2 block 1
i = 2 block 4
i = 3 block 1
i = 3 block 4
i = 4 block 1
i = 4 block 4
i = 5 block 1
i = 5 block 4
i = 6 block 1
i = 6 block 2
for(i in 1:5) {
for(i in 1:10) {
message("j = ", j, " block 1")
message("i = ", i, " block 1")
if(i > 5) {
message("j = ", j, " block 2")
message("i = ", i, " block 2")
break
message("j = ", j, " block 3")
message("i = ", i, " block 3")
}#end if
message("j = ", j, " block 4")
message("i = ", i, " block 4")
}#end for
message("j = ", j, " block 5")
}
j = 1 block 1
i = 1 block 1
j = 1 block 4
i = 1 block 4
j = 1 block 1
i = 2 block 1
j = 1 block 4
i = 2 block 4
j = 1 block 1
i = 3 block 1
j = 1 block 2
i = 3 block 2
j = 1 block 5
j = 2 block 1
i = 1 block 1
j = 2 block 4
i = 1 block 4
j = 2 block 1
i = 2 block 1
j = 2 block 4
i = 2 block 4
j = 2 block 1
i = 3 block 1
j = 2 block 2
i = 3 block 2
j = 2 block 5
댓글남기기