본문 바로가기
R Programming

R Programming-":" 와 seq(), rep() 함수

by 카멜리아 시넨시스 2021. 1. 5.
반응형

  R에서 벡터를 생성하는 방법은 여러 가지가 있으며, 그중 첫 번째로 : 와 seq(), rep() 함수에 대해 알아보자.

 

 

1. ":" 

  ":" 명령어를 이용하면 값이 1씩 증가하거나 감소하는 실수 벡터를 만들 수 있다.

 

  예제를 통해 쉽게 알아보자.

 

> x <- 1:5
> x
[1] 1 2 3 4 5

 

 

> x <- 10:1
> x
 [1] 10  9  8  7  6  5  4  3  2  1

 

 

> x <- pi:10
> x
[1] 3.141593 4.141593 5.141593 6.141593 7.141593 8.141593 9.141593

 

 

> x <- pi:5
> x
[1] 3.141593 4.141593

 

 

  위 예제를 보면 알 수 있듯이 a:b는 a에서부터 1씩 증가하거나 감소하는 벡터를 생성하며, 그 범위는 b를 넘지 못한다. 이때, a<b이면 증가하며, a>b이면 감소하게 된다. a나 b가 소수여도 상관없이 일정량 1만큼씩 증가, 혹은 감소한다.

 

 

 

2. seq()

  seq() 함수의 경우 :와 역할이 같으며, 좀 더 세세하게 조정할 수 있다.

 

> seq(17)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17

 

> seq(1,5)
[1] 1 2 3 4 5

 

> seq(1.3, 5)
[1] 1.3 2.3 3.3 4.3

 

  기본적으로 seq() 함수는 ":"와 같이 시작 수와 끝 수를 입력해주면 간격이 1인 벡터를 만들어주며, 정수가 아닌 소수가 들어가도 ":"와 같이 작용한다. 만일 seq(17)과 같이 괄호 안에 숫자만 입력하면 1:17과 같은 방법으로 작동한다.

 

  다만, seq() 함수는 여러 옵션을 통해 벡터의 간격과 길이를 조정해줄 수 있다. 

 

 

① "by= "

  by를 통해 벡터의 간격을 조정할 수 있다.

 

> seq(1, 5, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

 

  위와 같이 첫 수와 마지막 수를 입력해준 후 by=0.5 란 조건을 넣어주면 벡터의 간격이 0.5로 조정됨을 알 수 있다.

 

 

② "length= ", "length.out= "

   length를 통해 벡터의 길이를 조정할 수 있다.

 

> seq(1, 5, length=10)
 [1] 1.000000 1.444444 1.888889 2.333333 2.777778 3.222222 3.666667 4.111111 4.555556 5.000000

 

  length=10 조건을 넣어주면 길이가 10인 벡터가 탄생한다. 이 경우 간격은 길이에 맞게 자동으로 조정된다. 참고로, by와 length는 같이 사용하지 못한다.

 

 

*참고

  length는 seq 함수 내에서 사용할 수도 있지만, 그 자체로도 함수이다.

 

> x <- seq(1, 5, length=10)
> length(x)
[1] 10

 

  위와 같이 length() 함수는 벡터의 길이를 나타내며, 이를 이용하여 다음과 같이 사용할 수도 있다.

 

> 1:length(x)
 [1]  1  2  3  4  5  6  7  8  9 10

 

 

③ "along.with= "

  along.with는 length와 마찬가지로 벡터의 길이를 정해주는 역할을 하지만, length는 숫자를 받는 대신에 along.with는 벡터를 인수로 받는다는 점이 다르다. 예를 통해 알아보자.

 

> x <- 1:10

> seq(along.with=x)

 [1]  1  2  3  4  5  6  7  8  9 10

> seq(2, 20, along.with=x)

[1]  2  4  6  8 10 12 14 16 18 20

 

  위와 같이 along.with는 벡터를 인자로 받으며, 받은 벡터의 길이를 바탕으로 벡터를 생성한다. 첫 수와 끝 수를 지정해주지 않으면 1부터 시작하여 간격이 1인 벡터를 만들며, 첫 수와 끝 수를 지정해주면 length와 같은 방법으로 길이에 맞게 간격을 조정하여 벡터가 생성된다.

 

 

  seq_along 함수를 통해 같은 일을 할 수 있다.

 

> seq_along(x)
 [1]  1  2  3  4  5  6  7  8  9 10

 

 

 

3. rep()

  rep() 함수는 replicate의 준말로, 같은 것을 반복한다.

 

> rep(0, times=5)
[1] 0 0 0 0 0

 

> rep(1:3, times=5)
 [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3


> rep(c(1,3), times=5)
 [1] 1 3 1 3 1 3 1 3 1 3

 

  rep() 함수는 times= 를 통해 반복할 횟수를 정하며, 첫 번째란에 반복할 대상을 입력한다. 반복 대상은 단순 수도 되며, 1:3, c(1,3)과 같이 벡터도 가능하다.

 

 

  또한, 벡터의 경우 each= 를 통해 각각 반복할수도 있다.

 

> rep(1:3, each=5)
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3


> rep(c(1,3), each=5)
 [1] 1 1 1 1 1 3 3 3 3 3 

 

 

 

 

  지금까지는 실수형의 벡터를 만들 때 쉽게 사용할 수 있는 함수 ":", seq(), rep()에 대해 알아보았다. 다음에는 좀 더 보편적으로 쓰이는 c()와 vector()에 대해 알아보자.

 

 

 

반응형

'R Programming' 카테고리의 다른 글

R Programming- c(), vector() 함수  (1) 2021.01.13
R Programming-데이터 유형과 데이터 구조  (0) 2021.01.01

댓글