|

R 벡터 합치기 방법

R 초보자들이 백지에서 변수 벡터를 타이핑으로 하나둘씩 자가 배양 생성한 이후, 개발 프로젝트 중단에 맞닥뜨리는 가장 많이 겪는 난관 중 첫 번째는 바로 “생성시켜 분열되어 떠다니는 여러 개의 고립된 벡터 조각들을 하나의 웅장한 데이터 덩어리로 영구 합병 합쳐야 할 때”입니다.

가령 예를 들어, 앞서 수집된 기존 영업 나이 데이터에 오늘 실적의 새로운 학생 데이터가 타 부서 파견으로 추가로 합류되었다거나, 남자 키 10명의 배열 데이터와 그에 배정된 몸무게 10명의 배열 데이터를 가로세로 엑셀 형태의 직관적인 하나의 표로 다각적으로 정리하어 레포팅하려고 할 때 기초 시멘트 작업으로 사용하는 R의 가장 강력한 “결합, 합치기 통합” 원시 함수들의 3대 방향성 메커니즘과 정확한 작동 제어 원리를 딥다이브해 파헤쳐 봅니다.

1. 같은 방향으로 기차 꼬리표 달듯 길게 1차원 배터리로 이어 붙이기: c() 기본 연산자

R에서 “Combine(결합 접합하다)”를 의미하는 알파벳 c() 함수는 태초에 보통 수동으로 배열 벡터를 단독으로 처음 생성할 때(예: `c(1,2,3)`)만 제한적으로 1회용 쓰이는 것이 단연코 절대 아닙니다. 오히려 이미 메모리 변수 상에 만들어져 분리된 거대한 두 개 이상의 벡터 묶음을 일렬로 나란히, 하나의 초경량 긴 화물 열차 기차처럼 통짜로 이어 붙일 때도 c() 래퍼를 씌워 맹활약 합병합니다.

# 독립적으로 쪼개진 기본 그룹 벡터 방 생성
group_a <- c(1, 2, 3)
group_b <- c(10, 20, 30)

# c()로 감싸 두 벡터의 내용물을 뜯어내 단일 차원 한 줄짜리 배터리로 이어 붙이기!
result_c <- c(group_a, group_b)

result_c
> [1]  1  2  3 10 20 30

이 방법은 고립된 여러 엑셀 파편 데이터 숫자들을 하나로 통짜로 일단 모조리 뭉쳐버려서 잉여값 없이 거시적 전체의 평균(mean)이나 총합(sum) 통계를 내야 하거나, 불순물 끼어듦이 없는 가장 가벼운 연속된 단일 리스트 1차원 프로그래밍 배열 구조를 유지해야 할 때 필수적으로 사용됩니다.

2. 세로로 열기둥(Column) 방향으로 나란히 세워 결합하기: cbind()

그러나 실제 세계 업무표는 단순한 한 줄짜리 기다란 기차가 아니라 다차원 표입니다. 각각의 분리된 배열 변수 결과 데이터들을 “엑셀의 각 기둥 세로칸(Column 열)”처럼 서로 양팔 나란히 평행하게 수직으로 세워서 두께가 있는 2차원 볼륨의 하나의 행렬(Matrix) 혹은 데이터 프레임(Data Frame) 형태로 빌어먹게 만들어내야 할 실전 상황이 시나리오상 훨씬 더 많습니다.

이때 사용하는 것이 Column-bind(열 기둥 묶기)의 직관적 조합어 약자인 cbind() 함수입니다.

# A선수의 몸무게와 키 정보, B수, C수... (벡터의 길이가 원소 3개로 완벽히 동일함!)
weights <- c(60, 75, 80)
heights <- c(170, 182, 175)

# 두 납작한 가로 데이터를 세워 기둥 컬럼(세로) 형태로 평행하게 시멘트 합치기 바인딩
my_data_cols <- cbind(weights, heights)
my_data_cols
>      weights heights
> [1,]      60     170
> [2,]      75     182
> [3,]      80     175

3. 피자 도우처럼 가로 밑바닥 행(Row) 방향으로 층층이 겹겹이 쌓아올리기: rbind()

반대로 만약 입력되어 추가될 실적 데이터가 수직 컬럼(열) 항목 단위로 들어오는게 아니라, 엑셀 장부 맨 밑 단에 오늘의 수입 1일차 하루 일주일 치 장부 기록(단일 완전체 레코드)처럼 밑으로 계속 횡적 가로(행, Row) 형태로 무식하게 누적되며 쌓여져 내려가야 한다면 Row-bind(가로줄 바닥 묶기)의 약자인 rbind() 함수를 사용합니다.

# 이미 정의된 평가 규격(국어/영어/수학 국룰 순서)에 맞춰진, 1반의 실적 점수, 2반의 평균 점수
class1_scores <- c(90, 80, 85)
class2_scores <- c(88, 70, 100)

# 각 반의 성적을 위아래 가로줄로 햄버거 패티처럼 샌드위치 시멘트 합치기!
my_data_rows <- rbind(class1_scores, class2_scores)
my_data_rows
>               [,1] [,2] [,3]
> class1_scores   90   80   85
> class2_scores   88   70  100

🚨 에러 유발 경보! 치명적 강제 제약 포인트! cbind와 rbind를 병용 쓸 때 절대 주의할 점

수직적 열 방향 cbind() 이든 수평적 패티 겹겹 쌓기 rbind() 이든 프로그래밍 언어상 절대 불변의 규칙이 있습니다. 바로 결합하려는 양쪽 테이블 혹은 벡터들의 대상이 되는 접착면 직각 구간의 “개수(길이 랭스)”가 반드시 기계적으로 자로 잰 듯 똑같이 동일해야 압착 합성이 가능합니다!

길이 원소 갯수가 3개인 짧은 삐꾸 벡터와 혼자 길이가 무려 4개인 벡터를 세로로 책장처럼 나란히 세우려 결합 시도하면, R 메모리 결합의 마지막 아귀 모서리 이가 맞지 않기 때문에 쓰레기값 메모리 덤프 생성을 자가 방어하고자 R 컴파일러가 강력한 치명적 Warning/Error 텍스트 경고 문구를 빨갛게 콘솔에 뱉어내니 꼭 물리적 접착 병합(Merge)전 단위 데이터 길이를 `length()`로 교차 오디팅 확인하세요.


당신이 좋아할 만한 콘텐츠

by Google Adsense


관련 글 보기