티스토리 뷰

카테고리 없음

[R기초] 행렬(Matrix)

훈데이텀 2018. 3. 22. 22:53
Basic-Operator

1. 행렬(Matrix)

행(row), 열(columns)로 구성된 2차원 구조이다.

벡터처럼 하나의 데이터 유형만 가진다.

벡터화(Vectorization), 재사용규칙(recycling)이 적용된다


   1.1 행렬 만들기(To make matrix)

   기본 : matrix(vector, nrow = , ncol = ) 

      # nrow : 행의 개수

      # nrow : 열의 개수

      # 행부터 채운다

(1) rbind(vector1, vector2, ...)

 # bind vector based on row


> v1 <- 1:3
> v2 <- 4:6
> rbind(v1,v2)
   [,1] [,2] [,3]
v1    1    2    3
v2    4    5    6


(2) cbind(vector1, vector2, ...)

# bind vectors base on column


> cbind(v1, v2)
     v1 v2
[1,]  1  4
[2,]  2  5
[3,]  3  6



   1.2 slicing

# matrix[row, col]


> A <- matrix(1:4, nrow = 2, ncol = 2)
> A
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> A[1 , ] # 1행 추출 : 벡터
[1] 1 3
> A[ , 2] # 2행 추출 : 벡터
[1] 3 4
> B <- matrix(1:6, nrow = 2, ncol = 3)
> B
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> B[ , 2]               # 벡터로 출력
[1] 3 4
> B[ , 2, drop = FALSE] # 행렬을 유지하라
     [,1]
[1,]    3
[2,]    4
> B[ , 2:3]             # 행렬
     [,1] [,2]
[1,]    3    5
[2,]    4    6
> B[1, 3]
[1] 5



   1.3 행렬의 연산 : 덧셈, 뺄셈, 곱셈, 역행렬 ,전치행렬

> A <- matrix(1:4, nrow = 2, ncol = 2)
> B <- matrix(5:8, nrow = 2, ncol = 2)
> A + B # B + A 결과가 같다.(교환법칙)
     [,1] [,2]
[1,]    6   10
[2,]    8   12
> A - B # A - B 결과가 다르다.(교환법칙 성립x)
     [,1] [,2]
[1,]   -4   -4
[2,]   -4   -4
> A %*% B # 곱셈
     [,1] [,2]
[1,]   23   31
[2,]   34   46
> B %*% A # 교환법칙 성립x
     [,1] [,2]
[1,]   19   43
[2,]   22   50


# 역행렬(Inverse Matrix)

# 역행렬 조건 (1.정방행렬, 2. 행렬식이 0이 아니다. a11*a22-a12*a21) : solve(matrix)


> solve(A)
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5
> A %*% solve(A)
     [,1] [,2]
[1,]    1    0
[2,]    0    1
> solve(A) %*% A
     [,1] [,2]
[1,]    1    0
[2,]    0    1


> #문제
> # x + y = 3
> # x - y = 1
> A <- matrix(c(1, 1, 1, -1), nrow = 2, ncol = 2)
> B <- matrix(c(3,1), nrow = 2, ncol = 1)
> A
     [,1] [,2]
[1,]    1    1
[2,]    1   -1
> B
     [,1]
[1,]    3
[2,]    1
> solve(A) %*% B
     [,1]
[1,]    2
[2,]    1



# 전치행렬(Transpose matrix) : t(matrix)

# 행과열을 바꿈


> t(A)
     [,1] [,2]
[1,]    1    1
[2,]    1   -1


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함