안녕하세요. 우주신 입니다.
오늘은 행렬(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번째 열에 있는 구성요소를 가리켜라.
끝.
꼭 직접 연습해보시길 바랍니다.
수고하셨습니다.
'R' 카테고리의 다른 글
[R] 데이터프레임(DataFrame) 변수명 변경, 변수 선택 및 정렬 (5) | 2017.02.07 |
---|---|
[R] 데이터프레임(DataFrame) 생성, 변수 추가, 결합 및 인덱싱 (4) | 2017.02.07 |
[R] 벡터(Vector) 기본함수 및 인덱싱 (0) | 2017.01.27 |
[R] 데이터 구조 (벡터, 요인, 행렬, 배열, 데이터프레임, 리스트) (3) | 2017.01.25 |
[R] 객체 만들기 (1) | 2017.01.25 |
댓글