본문 바로가기
R

[R] 행렬(Matrix) 기본함수 및 인덱싱

by JKyun 2017. 2. 1.

안녕하세요. 우주신 입니다.


 오늘은 행렬(Matrix)에 대해 배워보겠습니다.



행렬은 동일한 유형의 2차원 데이터 구조입니다.


[m * n 행렬]



[사칙 연산]


행렬에서 사용하는 연산자는 +(덧셈), -(뺄셈), *(원소곱셈), %*%(행렬곱셈), /(나눗셈), %%(나머지), ^(제곱)이 있습니다.



연산을 하기에 앞서 X, Y 행렬을 만들었습니다. 

데이터구조 포스팅에서 배웠던 것을 복습해 본다면,

X <- matrix(1:9, nrow=3, byrow=FALSE)

"1부터 9까지의 숫자를 행(row)의 수가 3개인 행렬에 위에서 아래의 방향으로 넣어라"

Y는 왼쪽에서 오른쪽 방향으로 수를 넣은 행렬입니다.


이제 연산을 해보겠습니다.

+, -, /, %%, ^의 경우에는 각각의 위치의 원소들끼리 연산이 됩니다.


행렬 연산에서 주의해야 할 부분은 곱셈입니다.


첫번째 곱셈 X*Y 는 위 연산들과 마찬가지로 각각의 위치의 원소들끼리 곱한 결과를 입니다.


두번째 곱셈 X %*% Y 는 행렬의 곱셈으로서 제가 고1 때 배웠던 방식 입니다.


두 행렬을 잘 비교해 보시기 바랍니다 ~_~


밑에 그림과 같이 행과 열이 다른 행렬끼리 연산을 할 경우 오류가 나니 주의!



[기본 함수]


1. 행렬 결합 함수 cbind( ), rbind( )



말 그대로 행렬을 결합하는 함수입니다. 

c는 column의 약자로 열끼리 결합, r은 row의 약자로 행끼리 결합 하라는 의미 입니다.



2. 행렬 평균, 합을 구하는 함수 rowMeans( ), colMeans( ), apply( )



행렬 전체 평균과 합은 mean(X), sum(Y)로 구할 수 있습니다.

그러나 특정 행이나 열의 평균을 구해야 할 때가 많습니다. 

rowMeans(X): 각 행의 평균

colMeans(X): 각 열의 평균

합도 마찬가지로 rowSums( ), colSums( )을 이용하면 됩니다.


apply( )함수를 이용할 수도 있습니다.

apply(X, MARGIN, FUN, ...)

X: matrix

MARGIN: 1(row), 2(col)

FUN: 기능 (function)



3. 행렬에 이름 붙이기 rownames( ), colnames( )


이제, row와 col 뜻을 외웠으니 쉽게 이해할 수 있겠죠?



4. 전치함수 t( )

t는 transposition의 약자로 교환이라는 뜻 입니다.

Z함수를 전치한 결과 행과 열이 바뀐 것을 확인할 수 있습니다.



[인덱싱]


앞 시간에 배운 벡터의 인덱싱보다 쪼오금 복잡해 졌지만 같은 원리입니다.



-X[1, ]: X에서 1번째 행 전체 구성요소를 가리켜라.

-X[-1, ]: X에서 1번째 행을 제외한 전체 구성요소를 가리켜라.

-X[2, 2]: X에서 2번째 행과 2번째 열에 있는 구성요소를 가리켜라.

-X[1, c(2,3)]: X에서 1번째 행의 2, 3번째 열에 있는 구성요소를 가리켜라.





끝.


꼭 직접 연습해보시길 바랍니다.


수고하셨습니다.


댓글