이번 포스팅에서는 R 벡터 합치기를 하는 방법에 대하여 다뤄보겠습니다. 벡터를 합쳐서 더 긴 벡터를 만들거나, 차원이 높은 행렬을 만들 수 있죠. 또한 R 벡터 이름을 사용하면 무엇이 편한지 알아보겠습니다.
R 벡터 이름 붙이기
경우에 따라서 벡터의 각 원소에 이름을 붙여줄 수 있습니다. 보통의 경우는 다음과 같이 이름이 붙어있지 않은 상태입니다.
my_vector <- c(1, 20, 300)
my_vector
>> [1] 1 20 300
현재 벡터에 부여된 이름을 확인하는 방법은 names() 함수를 사용하는 방법입니다. 이 함수를 사용하면 현재 벡터에 부여된 이름이 정의된 공간을 보여줍니다. 현재 my_vector에는 이름을 부여해놓은 것이 없으므로 NULL이 반환됩니다.
names(my_vector)
>> NULL
이름 붙여준 경우, 이름을 사용해서 벡터를 슬라이스 해줄 수 있는 장점이 있습니다. 다음과 같이 my_vector의 각 원소에 이름을 부여해주도록 하겠습니다.
names(my_vector) <- c("first", "second", "third")
my_vector
>> first second third
>> 1 20 300
R 벡터 이름 변경하기
이미 이름이 정해진 벡터라도, 이름 공간에 접근하면 얼마든지 이름을 변경해 줄 수 있습니다. 세번째 원소의 이름을 “my_value”로 변경해보겠습니다.
names(my_vector)[3] <- "my_value"
my_vector
>> first second my_value
>> 1 20 300
세번째 이름 공간에 마치 새로운 값(이름)을 넣어주는 것과 마찬가지라고 생각하면 좋겠습니다.
이름 사용 벡터 인덱싱
이렇게 부여된 벡터는 이름을 사용해서 벡터 인덱싱이 가능해집니다. 두번째 원소를 second라는 이름을 사용하여 꺼내와 보겠습니다.
my_vector["second"]
>> second
>> 20
보통 벡터에 일부러 이름을 붙여주지는 않지만, 나중에 데이터 프레임에서 같은 원리로 원소들을 접근합니다. 따라서, 작동 원리에 익숙해 질 필요가 있습니다.
R 벡터 합치기
벡터는 숫자만 묶을 수 있는 것이 아니다.
벡터는 같은 타입의 정보 (숫자, 문자)를 묶어놓은 것입니다. 즉, 숫자면 숫자, 문자면 문자이기만 하면, 묶을 수 있습니다. 다음은 문자열로 이루어진 벡터입니다.
str_vec <- c("사과", "배", "수박", "참외")
str_vec
>> [1] "사과" "배" "수박" "참외"
str_vec[c(1, 3)]
>> [1] "사과" "수박"
그렇다면, 문자와 숫자를 섞어서 벡터를 만든다면 어떨까요?
mix_vec <- c("사과", 12, "수박", "참외")
mix_vec
>> [1] "사과" "12" "수박" "참외"
결과를 살펴보면, R은 자동으로 통일할 수 있는 타입 (문자) 정보로 바꿔서, 벡터로 저장하는 것을 관찰 할 수 있습니다.
여러 R 벡터 합치기
여러 개의 벡터들을 하나로 묶을 수 있는 방법이 세 가지 존재합니다. 첫 번째 방법은 c()
함수를 사용하는 것입니다. 앞에서 정의한 str_vec와 mix_vec을 묶어 하나의 벡터로 만들려면 다음과 같이 할 수 있습니다.
c(str_vec, mix_vec)
>> [1] "사과" "배" "수박" "참외" "사과" "12" "수박" "참외"
가로로 합치기 vs. 세로로 합치기
column bind의 줄임말인 cbind()
함수는 벡터들을 세로로 붙여줍니다.
cbind(1:4, 12:15)
>> [,1] [,2]
>> [1,] 1 12
>> [2,] 2 13
>> [3,] 3 14
>> [4,] 4 15
row bind의 줄임말인 rbind()
함수는 벡터들을 가로로 쌓아줍니다.
rbind(1:4, 12:15)
>> [,1] [,2] [,3] [,4]
>> [1,] 1 2 3 4
>> [2,] 12 13 14 15
길이가 다른 벡터 합치기
만약 앞의 방법으로 합칠 때 길이가 다른 벡터를 합치게 되면 어떤 일이 벌어질까요? 다음의 코드를 보겠습니다.
cbind(1:4, 12:16)
>> [,1] [,2]
>> [1,] 1 12
>> [2,] 2 13
>> [3,] 3 14
>> [4,] 4 15
>> [5,] 1 16
보시는 바와 같이 길이가 짧은 벡터가 재활용이 되어서 합쳐지는 것을 확인 할 수 있습니다.
본 포스팅은 R 프로그래밍 기초 공략.zip 교재의 일부분 입니다. 본 교재는 R을 독학하시는 분들을 위하여 특별히 제작된 교재입니다. R을 이제 막 시작하셨다면 슬기로운 통계생활과 같이 공부해보세요!