티스토리 뷰
반응형
대부분의 프로그래밍 언어의 for 문법은 비슷하다. for 문을 알기전에 아래 R 기본함수들을 알아야 한다. 함수와 결과물을 보면 어렵지 않게 무슨 기능을 하는지는 알 수 있다.
rep(1, 10)
[1] 1 1 1 1 1 1 1 1 1 1
seq(1, 10)
[1] 1 2 3 4 5 6 7 8 9 10
seq(3, 11, 2)
[1] 3 5 7 9 11
seq_along(letters)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
아래와 같이 출력해볼까 한다.
[1] 3
[1] 5 5
[1] 7 7 7
[1] 9 9 9 9
[1] 11 11 11 11 11
for 문을 사용해서는 아래와 같이 가능하고,
for(i in seq(5)){
n <- i * 2 + 1
print(rep(n, i))
}
[1] 3
[1] 5 5
[1] 7 7 7
[1] 9 9 9 9
[1] 11 11 11 11 11
반응형
쓸데 없이 tibble & dplyr 로 해보면, 아래와 같다. 아 그리고 purrr 패키지의 map 함수를 써야 한다. 이 부분이 이해하는데 참 오랜시간이 걸렸는데 별도로 포스팅을 해볼까 싶기도 하다. 까먹기 전에...
# 중간 결과
enframe(1:5, name = NULL, value = 'c0') %>%
mutate(c1 = c0 * 2 + 1) %>%
mutate(c2 = map2(c1, c0, rep))
# A tibble: 5 × 3
c0 c1 c2
<int> <dbl> <list>
1 1 3 <dbl [1]>
2 2 5 <dbl [2]>
3 3 7 <dbl [3]>
4 4 9 <dbl [4]>
5 5 11 <dbl [5]>
# 최종 결과
enframe(1:5, name = NULL, value = 'c0') %>%
mutate(c1 = c0 * 2 + 1) %>%
mutate(c2 = map2(c1, c0, rep)) %>%
pull(c2) %>%
map(print) %>%
invisible()
[1] 3
[1] 5 5
[1] 7 7 7
[1] 9 9 9 9
[1] 11 11 11 11 11
또 다른 for 문 예시. seq_along 함수를 써서 for 문을 수행했다.
for(i in seq_along(letters)){
print(rep(letters[i],i))
}
[1] "a"
[1] "b" "b"
[1] "c" "c" "c"
[1] "d" "d" "d" "d"
[1] "e" "e" "e" "e" "e"
[1] "f" "f" "f" "f" "f" "f"
[1] "g" "g" "g" "g" "g" "g" "g"
[1] "h" "h" "h" "h" "h" "h" "h" "h"
[1] "i" "i" "i" "i" "i" "i" "i" "i" "i"
[1] "j" "j" "j" "j" "j" "j" "j" "j" "j" "j"
[1] "k" "k" "k" "k" "k" "k" "k" "k" "k" "k" "k"
[1] "l" "l" "l" "l" "l" "l" "l" "l" "l" "l" "l" "l"
[1] "m" "m" "m" "m" "m" "m" "m" "m" "m" "m" "m" "m" "m"
[1] "n" "n" "n" "n" "n" "n" "n" "n" "n" "n" "n" "n" "n" "n"
[1] "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" "o"
[1] "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p" "p"
[1] "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q" "q"
[1] "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r" "r"
[1] "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s"
[1] "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t" "t"
[1] "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u" "u"
[1] "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v" "v"
[1] "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w" "w"
[1] "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x" "x"
[1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"
[1] "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z" "z"
물론 tidyverse 패키지로 구현할 수도 있다.
enframe(letters) %>%
mutate(t1 = map2(value, name, rep)) %>%
pull(t1) %>%
map(print) %>%
invisible()
임의의 길이를 입력받아, 특정기호(*)로 정사각형을 출력하는 예제.
n = 5 # 임의의 길이
for(i in seq(n)){
print(paste0(rep('*', n), collapse = ''))
}
# 출력결과
[1] “*****”
[1] “*****”
[1] “*****”
[1] “*****”
[1] “*****”
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ipTIME
- github
- MyBatis
- Google Chart Tools
- Oracle
- java
- javascript
- 아이맥
- MongoDB
- 막대그래프
- Spring
- 맥북
- ggplot2
- SVN
- vagrant
- ktm모바일
- 알뜰요금제
- 이클립스
- R
- docker
- ubuntu
- MySQL
- python
- 자급제폰
- eclipse
- 셀프개통
- ggplot
- 마인크래프트
- 도넛차트
- heroku
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함