본문으로 바로가기



R에서의 벡터(Vector) 선언하기 2 - seq() & rep() 함수에 대하여

category R Programming/Data handling 2017.05.29 14:24
Vector declaration2

이번 포스팅에서는 저번시간에 이어서 R에서 벡터를 정의하는 방법에 대하여 알아보도록 하자. 저번 시간에 배운 c() 명령어가 벡터의 원소를 일일이 적어서 정의하는 방법이라면 “:”을 이용한 방법은 일정 규칙이 있는 벡터를 정의할 때 아주 유용한 방법이다.

예를 들어, 1에서부터 10까지 1씩 증가하는 벡터를 정의할때, c() 명령어를 사용하여 다음과 같이 정의할 수 있다.

a <- c(1,2,3,4,5,6,7,8,9,10)
a
##  [1]  1  2  3  4  5  6  7  8  9 10

하지만 이 명령어 대신에 “:” 명령어를 사용하면 다음과 같이 아주 간편하고 우아하게 정의할 수 있다.

a <- c(1:10)
a
##  [1]  1  2  3  4  5  6  7  8  9 10

벡터를 정의하는 또 한가지 방법은 수열을 뜻하는 sequence의 앞 세글자를 딴 seq() 명령어를 이용하는 방법이다. 위의 벡터 a를 seq() 명령어를 사용하여 정의하면 다음과 같다.

a <- seq(1, 10, 1)
a
##  [1]  1  2  3  4  5  6  7  8  9 10

seq() 함수는 R에 미리 정의된 함수인데, 그 함수가 어떻게 정의되어 있는지 알아보기 위해서는 console에 ?함수이름을 입력하면 된다. 따라서 이번 예제의 경우는 다음과 같이 입력하면 되겠다.

?seq
seq(from = Start, to = End, by = ((to - from)/(length.out - 1)),
    length.out = NULL, along.with = NULL, ...)

입력을 하면 seq() 함수의 설명이 적힌 인터넷 페이지가 뜰 것이다. 잘 읽어보면 seq() 함수는 위와 같은 입력요소를 사용하는 함수라는 이야기가 써져 있을 것이다.

즉, 1에서부터 시작해서 10에서 끝나는 수열이고 각 원소간의 간격이 1인 수열을 만들기 위해서는 seq(1, 10, 1) 이라는 명령어를 사용하면 된다.

하나의 팁은 함수 설명서를 읽다 보면, 함수에 미리 정의된 요소들이 있는데(이번 예제의 경우는 by, length.out, along.with) 이런 요소들은 사용자가 따로 명시해 주지 않는 이상 기본값으로 설정이 되어 있다는 이야기다. 즉, seq() 함수의 by 입력요소는 기본으로 1이 설정되어 있는 함수라서 다음과 같이 입력해도 동일한 결과를 얻을 수 있다.

a <- seq(1,10)
a
##  [1]  1  2  3  4  5  6  7  8  9 10

때때로 영벡터나 1벡터를 정의할 때 rep() 함수가 사용되기도 하는데, repeat 말 그대로 특정값을 몇번 반복하고 싶을때 사용되는 함수이다.

a <- rep(0, 5)
a
## [1] 0 0 0 0 0

입력한 rep(0, 5) 명령어는 0을 5번 반복해서 반환하는 의미이다. 이 함수의 자세한 설명은 앞에서 배운것을 응용해서 rep() 함수의 설명서를 참고하면 되므로, 독자에게 맡기겠다.


SHARE TO



티스토리 툴바