R-Studio 시퀀스(Seq), 리핏(Rep), 리버스(Rev)

R-Studio 반복제어 문을 위한 워밍업.

Featured image

R-Studio 의 Seq와 Rep

Seq는 순서대로 증가하는 변수를 만들어준다.
Rep는 인자값 만큼 반복하는 변수를 만들어준다.

사용된 함수

이름 함수이름 사용법
Seq seq() seq(시작값, 끝값, 증가값)
Rep rep() rep(반복할값, 반복할 횟수)
rev rev() rev( 벡터)


함수 예제

# :은 연속형 데이터
aa <- c(1:100)
aa
#   [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]  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50
#  [51]  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75
#  [76]  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100

# ,는 이산형 데이터
bb <- c(3:5, 8:9)
bb
# [1] 3 4 5 8 9

# 시퀀스 로 수증가 시키기
cc <- seq(from=1, to=5)
cc
# [1] 1 2 3 4 5

# 시퀀스 로 수증가 사용자 지정 증가값
dd <- seq(from=1, to=10, by=2)
dd
# [1] 1 3 5 7 9

# 시퀀스 반대로 줄이기
ee <- seq(from=10, to=1, by=(-3))
ee
# [1] 10  7  4  1

# rev(1:10) 뒤집기 reverse
rev(1:10)
#  [1] 10  9  8  7  6  5  4  3  2  1

# rep(1:10) 반복 replicates
rep(1, 10)
#  [1] 1 1 1 1 1 1 1 1 1 1

# 1, 2를 3번 반복
hh <- rep(1:2, 3)
hh
# [1] 1 2 1 2 1 2

# 서로 3번씩 반복
ii <- rep(1:2, each=3)
ii
# [1] 1 1 1 2 2 2

# 2, 3, 5 3번 반복
jj <- rep(c(2, 3, 5), 3)
jj
# [1] 2 3 5 2 3 5 2 3 5

# vectorization
cc <- c(1, 2)
cc^2 # c벡터에 각 원소마다 제곱 해줌
# [1] 1 4

# 1~100의 합에서 3~99 까지의 3의배수의 합의 차를 구함
a <- seq(1, 100, by=1)
b <- seq(3, 99, by=3)
result <- sum(a) - sum(b)
result
# [1] 3367

# seq를 이용하여 100, 91, 94 ... 1 만들기
a <- seq(100, 1, by=(-3))
a
#  [1] 100  97  94  91  88  85  82  79  76  73  70  67  64  61  58  55  52  49  46  43  40  37  34  31  28
# [26]  25  22  19  16  13  10   7   4   1

# seq와 sum을 이용하여 1+9+25+...+9801의 합을 구하시오.
# 참조 : 9801은 99의 제곱이다.
# 정답 : 166650
b <- seq(1, 99, by=2)
sum(b^2)
# [1] 166650

# 1 - 1/2 + 1/3 - 1/4 + ...+1/99-1/100
# 힌트 : seq를 이용하여 홀수항과 짝수항을 별도로 구하여 연산하면된다.
# 정답 : 0.688172
ex3 <- sum(1 / seq(from=1, to=100, by=2)) - sum(1 / seq(from=2, to=100, by=2))
ex3
# [1] 0.6881722

# 산수문제
kk <- seq(1, 100, by=3)
sum(kk)
# [1] 1717

kk2 <- seq(96, 1, by=-5)
sum(kk2)
# [1] 970