R 프로그래밍 5 - 수열 만들기(rep,seq)
안녕하세요
오늘은 R 에서 어떻게 수열을 만드는지에 대해서 알아보겠습니다.
수열 만들기
수열은 무엇일까요? 수 또는 다른 대상의 순서 있는 나열
R에서 간단하게 수열을 만드는 법에 대해서 알아보도록 하겠습니다.
- 숫자:숫자
예를 들어 봅시다.
초기값이 1이고 등차가 1인 수열을 15까지 입력을 해야한다면 여러분은 어떻게 하실건가요?
A <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
이렇게 무식하게 다 넣는 방법도 있습니다. 그런데 이걸 1000까지 늘려야 한다면?
엄청난 단순노동이 필요하겠죠?
이는 :를 이용해서 간단히 해결할 수 있습니다.
a <- 1:15
R에서는 이렇게 코딩을하면 "1부터 순차적으로 1씩 증가해서 15까지 증가시켜라" 가 됩니다.
결과창은 이렇게 나옵니다.
그럼 반대로 15부터 1씩 감소하는 등차수열을 만들어야하면 어떻게 할까요?
a <- 15:1
반대로 해주시면 됩니다.
- seq 함수(sequence)
=seq(시작숫자, 끝숫자, by=몇씩증가시킬건지)
seq함수는 특정 숫자에서 등차수열을 만들때 활용하는 함수 입니다.
그럼 1부터 등차가 2씩 증가하는 수열은 어떻게 만들 수 있을까요?
seq 함수를 활용해봅시다.
예를 들어 1 부터 등차가 2씩 증가 29까지 증가하는 함수는 어떻게 만들 수 있을까요?
#from, to 생략
b <- seq(1,29,by=2)
1: 1부터
29: 29까지
by=2: 2씩 증가시켜라
#from, to 문법
c <- seq(from=1,to=29,by=2)
from=1: 1부터
to=29: 29까지
by=2: 2씩 증가시켜라
from과 to를 활용을 해도 되고 안해도 되는데요.
활용을 하든 안하든 결과는 같습니다.
- rep 함수(repeat)
rep 함수는 같은 숫자나 문자를 반복해서 수열로 만들어 주는 함수입니다.
=rep(반복할 숫자벡터, 반복 횟수)
#벡터자체를 3번 반복함
d <- rep(c(1,2),3)
#each: 각각 원소를 반복함
e <- rep(c(1,2),each=3)
#time: 벡터자체를 3번 반복함
f <- rep(c(1,2),times=3)
#문자열도 가능
g <- rep(c("가나다","라마바"),3)
위의 코드에 대한 결과
이런식으로 하나의 백터를 단순히 반복을 해주는 것인데요.
여기서 봐야할것은 each와 times입니다.
each: 각 벡터의 원소를 차례대로 반복
위의 예시
e <- rep(c(1,2),each=3)
1과 2를 차례대로 3번씩 반복해라 -> 결과 1 1 1 2 2 2
times: 벡터 자체를 반복
위의 예시
e <- rep(c(1,2),each=3)f <- rep(c(1,2),times=3)
(1, 2) 백터를 3번씩 반복해라 -> 결과 1 2 1 2 1 2
유념해서 활용하면 유용한 함수 입니다!
마치며
오늘은 R에서 수열을 만드는 함수에 대해서 알아봤습니다.
위의 함수는 R프로그래밍 할때 자주 쓰이는 함수로 잘 활용하면 정말로 유용한 함수 입니다.