R프로그래밍에서 벡터(Vector)가 가장 기본적인 자료형이다. 벡터를 얼마나 잘 다루는지에 따라 R을 잘 다루는지 아닌지 알 수가 있다. 벡터를 만들어서 각각 결과치를 만들었을때, 여러개의 벡터끼리 합치기도 하고 나누려 했을 때, 막상 잘 생각이 나질 않는다. 내가 알고 있는 방법을 정리해본다.
1. c 함수 이용하기
우리가 R 프로그래밍을 배울때 가장 먼저 배우는 표현식이 c()
인데, 이게 문법이 아니라 하나의 함수이다. RStudio 툴에서 F1
를 누르면 아래와 같은 도움말을 볼 수 있다.
Combine Values into a Vector or List
Description
This is a generic function which combines its arguments.
The default method combines its arguments to form a vector. All arguments are coerced to a common type which is the type of the returned value, and all attributes except names are removed.
그렇다보니, 2개의 벡터끼리의 합치는 방법은 c()
로 묶기만 하면 된다.
a = c(1,2)
b = c(10,20)
c(a,b)
# [1] 1 2 10 20
c(c(1,2), c(10,20))
# [1] 1 2 10 20
만약 자료형이 다른 것들도 합칠 수 있을까? 있긴하다. 의도치 않은 결과가 나올 수도 있지만, 문자열이 포함되어 버리면, 거의 문자열로 변경된다 보면 된다.
x = c("a","b")
y = c(10,20)
c(x,y)
# [1] "a" "b" "10" "20"
2. append 함수 이용하기
c
함수를 사용해도 되지만, 특정위치에 삽입하고 싶다면 append
함수를 사용하면 된다. 우선 간단하게 2개의 벡터를 입력하면 뒤에 붙여 연결된다.
a = c(1,2)
b = c(10,20)
append(a,b)
# [1] 1 2 10 20
특정위치에 삽입하고 싶다면, after
옵션을 사용하면 된다. 결과를 보면 어떻게 작동하는지 쉽게 알 수 있다.
append(a,b, after = 0)
# [1] 10 20 1 2
append(a,b, after = 1)
# [1] 1 10 20 2
append(a,b, after = 2)
# [1] 1 2 10 20
3. list-unlist 함수 사용하기
list
함수를 사용해서도 벡터간에 병합이 가능하다. 리스트를 만들어놓고, unlist
함수를 이용해서 각 element 들을 합치는 방법이다.
a = c(1,2)
b = c(10,20)
l = list(a,b)
l
# [[1]]
# [1] 1 2
#
# [[2]]
# [1] 10 20
unlist(l)
# [1] 1 2 10 20
정리하면..
벡터끼리 병합하는 방법을 몇가지 정리해봤지만, 그래도 c
함수를 쓰는게 가장 쉽다. 여기에 언급되지 않은 여러가지 방법이 더 있을 수 있고, 그때 그때 상황에 맞게 사용할 수 있도록 이런 방법이 있다는 정도만 알고 있으면 될거 같다.