아직도 R의 기본적인 문법을 가지고 헤매는 상태이다. Perl과 달리 R은 기본적으로 벡터 형태의 데이터를 다루고 있어서 Perl처럼 반복문을 많이 쓰지 않아도 된다. 그러려면 rep() 함수를 잘 이해해야 하는데, 이것이 생초보자에게 첫번째 좌절을 안겨주는 관문이 된다. 이건 지극히 개인적인 경험이므로 다른 사람은 어떤지 모르겠다.
이 포스팅은 내 기억을 정리하기 위한 것이지 일반적인 R의 강좌를 쓰고자 함이 아니니 혹시 그런 이유로 이 블로그에 들르신 분은 과감히 [뒤로가기] 버튼을 눌러 주시길...
아주 간단한 rep()의 예제를 보자.
> rep("A", 4)
[1] "A" "A" "A" "A"
앞의 인수로 주어진 데이터를 뒤의 인수에서 지정한 회수만큼 단순히 반복하는 것이다. 만약 반복하고자 하는 인수가 벡터라면 어떻게 될까?
> x=("A", "B", "C")
> rep(x, 3)
[1] "A" "B" "C" "A" "B" "C" "A" "B" "C"
전체 엘리먼트에 대해서 두번째 인수만큼 반복하는 것이다.
그럼 이번에는 좀 더 복잡한 사례를 들어 보겠다. 1 1 1 1 2 2 2 2 3 3 3 3을 출력하고 싶다면?
> rep(c(1, 2, 3), c(4, 4, 4))
[1] 1 1 1 2 2 2 3 3 3
또는 다음과 같이 두번째 인수를 간략하게 표현할 수도 있다.
> rep(1:3, rep(4,3))
[1] 1 1 1 1 2 2 2 2 3 3 3 3
이상은 두번째 인수도 벡터로 주어지는 경우이다. 두 인수는 각각 벡터이고, length가 같아야 한다. 첫번째 인수 벡터의 각 원소에 대하여 반복하는 회수를 두번째 벡터에서 결정하는 것이다. 조금 더 복잡한 사례를 들어 보자. 1 2 2 3 3 3 4 4 4 5 5 5 5 5은 다음과 같이 표현 가능하다.
> rep(1:5, 1:5)
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
이제야 조금 알겠다...