[R] 벡터 생성 연습 (수열, 텍스트 조합)

해당 포스트에서는 R에서 수열 또는 텍스트 조합으로 벡터를 생성하는 방법을 소개합니다.

1. INTRO

네이버 지식iN에서 지식을 공유하고 있습니다. 간단한 질문들은 해당 질문에 바로 답변을 드리지만 질문의 내용이 유익하거나 추가 설명이 필요한 경우에는 포스팅을 작성하여 공유드리고 있습니다.

2. 질문

네이버 지식인 질문
▲ 네이버 지식인 질문

3. 풀이

질문에 언급된 문제는 총 2문제로 수열(2번) 문제와 텍스트 조합(7번) 문제입니다.

  1. 수열 벡터 생성
  2. 텍스트 조합 벡터 생성

1. 수열 벡터 생성 (문제2)

문제로 제시된 수열은 1부터 10까지의 숫자들로 구성되어 있으며, 홀수 벡터 뒤에 짝수 벡터가 출력되도록 프로그래밍 하면 됩니다.

저는 seq() 함수를 이용하여 문제를 풀이할 예정이며, seq() 함수는 수열을 생성해 주는 함수로 시작값(from), 종료값(to), 간격(by)을 이용하여 수열을 생성할 수 있습니다.

홀수 벡터 생성

a <- seq(from=1, to=10, by=2)
a
[1] 1 3 5 7 9

홀수 벡터(a)를 생성하였으니 이제 짝수 벡터를 생성하여 뒤에 붙여주면 됩니다. 짝수 벡터는 위에서 사용한 seq() 함수를 한번 더 사용해도 되지만 아래와 같이 홀수 벡터 a를 이용해서 동일한 결과를 얻을 수 있습니다.

짝수 벡터 생성

# a를 활용한 짝수 벡터 생성 
a+1

# 결과 동일 
seq(from=2, to=10, by=2)
[1]  2  4  6  8 10

위에서 구한 홀수 벡터 a와 짝수 벡터 a+1을 이어주는 건 c() 함수를 이용하면 됩니다.

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

2. 텍스트 조합 벡터 생성 (문제7)

문제에서는 a, b, c 3개의 알파벳들의 조합으로 2자리 문자 벡터를 구성하고 있습니다. 문자 벡터를 자세히 살펴보면 앞자리는 a, b, c 가 차례로 3번 반복되었으며, 뒷자리는 a, b, c가 각 3번씩 반복된 것을 알 수 있습니다.

저는 위에서 구한 것처럼 앞자리를 구성하는 문자 벡터를 만들고 뒷자리를 구성하는 문자 벡터를 만들어 문자를 이어 붙이는 방식으로 풀이해 보겠습니다.

R에서는 벡터의 반복을 수행하는 rep()라는 함수가 있으며 times 옵션을 이용하여 반복 횟수를 지정하여 사용할 수 있습니다.

앞자리 문자 벡터 생성

# [a,b,c]를 3번 출력
rep(c('a','b','c'), times=3)
[1] "a" "b" "c" "a" "b" "c" "a" "b" "c"

뒷자리 문자 벡터는 a, b, c 문자를 각 3번씩 반복하여 생성할 수 있으며, rep() 함수에서는 each 옵션에 설정하면 됩니다.

뒷자리 문자 벡터 생성

# [a,b,c]를 각각 3번씩 출력
rep(c('a','b','c'), each=3)
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c"

문제에 주어진 문자의 앞자리와 뒷자리 생성 방법을 확인하였으니 이제 각 벡터를 이어 붙여주면 됩니다. 위에서 벡터의 연결은 c() 함수를 이용하면 된다고 설명드렸으나 이번에는 벡터가 아닌 문자의 연결이기에 사용하는 함수가 다릅니다.

문자의 연결에는 paste() 함수를 이용하면 되는데 이번 문제와 같이 연결자(띄어쓰기,콤마 등)가 없는 경우에는 paste0() 함수를 이용하면 됩니다.

문자 조합 벡터 생성

paste0(rep(c('a','b','c'), times=3), 
       rep(c('a','b','c'), each=3))

# 결과 동일
paste(rep(c('a','b','c'), times=3), 
      rep(c('a','b','c'), each=3), sep="")
[1] "aa" "ba" "ca" "ab" "bb" "cb" "ac" "bc" "cc"

만약 문자 연결자를 지정하고 싶다면 sep 옵션에 원하는 연결자(문자, 숫자, 기호 등)를 입력하시면 됩니다.

paste 함수 예시

paste(rep(c('a','b','c'), times=3), 
      rep(c('a','b','c'), each=3), sep=",")
[1] "a,a" "b,a" "c,a" "a,b" "b,b" "c,b" "a,c" "b,c" "c,c"
paste(rep(c('a','b','c'), times=3), 
      rep(c('a','b','c'), each=3), sep=" and ")
[1] "a and a" "b and a" "c and a" "a and b" "b and b" "c and b" "a and c" "b and c" "c and c"

4. 마무리

이번 포스트에서는 R에서 벡터를 생성하는 예시 를 몇가지 소개하였습니다. 결과가 동일하더라도 프로그래밍 방법은 상황과 사람에 따라 스타일이 달라질 수 있으며 위에서 소개드린 내용을 참고하여 좀 더 다양한 벡터 생성 연습을 해보시면 좋을 것 같습니다.

5. 관련링크

[1] 네이버 지식인 질문/답변


banner-request-analysis