_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › Matrix

Contents

[-]
1 행렬(Matrix)의 정의
2 행렬 생성 방법: cbind(), rbind()
3 행렬 생성 방법: matrix()
4 행렬 생성 방법: dim()
5 행렬 생성 방법: diag()를 이용함 대각행렬, 단위행렬
6 행렬 생성 방법: upper.tri(), lower.tri()를 이용함 상삼각행렬, 하삼각행렬
7 행렬 생성 방법: t()를 이용한 전치행렬
8 행렬의 연산


1 행렬(Matrix)의 정의 #

  • 행렬은 2차원 데이터 구조
  • 행차원, 열차원을 가짐
  • 수학과는 달리 문자형이나 논리형 등을 원소로 가질 수 있음
  • 행렬의 원소는 한가지 자료형만 허락됨
  • 행렬의 정의하는 속성
    • 형(mode)
    • 길이(length)
    • 차원(dim)
    • 차원명(dimnames)

  • 1 2 3
    4 5 6 -> 2행 3열의 차원을 갖는 수치형 행렬로 길이는 6

    A D
    B E
    C F -> 3행 2열의 차원을 갖는 문자형 행렬로 길이는 6

2 행렬 생성 방법: cbind(), rbind() #

> #벡터
> x <- c(1,2,3)
> y <- c(4,5,6)
> z <- c(7,8,9)
> #방법1: cbind()함수로 열로 붙이기
> cbind(x,y,z)
     x y z
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> #방법2: rbind()함수로 행으로 붙이기
> rbind(x,y,z)
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6
z    7    8    9

3 행렬 생성 방법: matrix() #

> #방법3: matrix함수 사용하기
> c(x,y,z)
[1] 1 2 3 4 5 6 7 8 9
> matrix(c(x,y,z), nrow = 3) 
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> matrix(c(x,y,z), ncol = 3) 
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> matrix(c(x,y,z), nrow = 3) 
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> matrix(c(x,y,z), nrow = 3, byrow = T) #행 우선채움
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> matrix(c(x,y,z), byrow=T) #열 우선채움
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
> matrix(c(x,y,z), ncol = 3, byrow = T) #2번째 인수는 행, 열의 크기를 결정한다. 3번째 인수는 행 또는 열 우선을 지정한다.
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> 
> matrix(c(x,y,z), ncol = 2, byrow=T)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9    1
> matrix(c(x,y,z), ncol = 1, byrow = T) #열벡터
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
> matrix(c(x,y,z), nrow = 1, byrow = T) #행벡터
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    2    3    4    5    6    7    8    9
> 


4 행렬 생성 방법: dim() #

> dim(c(x,y,z)) <- c(2,2)
이하에 에러dim(c(x, y, z)) <- c(2, 2) : 
  dims [product 4] do not match the length of object [9]
> dim(c(x,y,z)) <- c(3,3)
이하에 에러dim(c(x, y, z)) <- c(3, 3) : 
  함수 "c<-"를 검색해낼수가 없었습니다
> data <- c(x,y,z)
> dim(data) <- c(3,3)
> data
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> 

5 행렬 생성 방법: diag()를 이용함 대각행렬, 단위행렬 #

> x <- c(1,3,5,0)
> diag(x) #대각행렬
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    3    0    0
[3,]    0    0    5    0
[4,]    0    0    0    0
> diag(1:5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    0    2    0    0    0
[3,]    0    0    3    0    0
[4,]    0    0    0    4    0
[5,]    0    0    0    0    5
> diag(rep(1,3)) #단위행렬
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
> 

6 행렬 생성 방법: upper.tri(), lower.tri()를 이용함 상삼각행렬, 하삼각행렬 #

> m <- matrix(1:9, nrow = 3, byrow = T)
> m
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> upper.tri(m)
      [,1]  [,2]  [,3]
[1,] FALSE  TRUE  TRUE
[2,] FALSE FALSE  TRUE
[3,] FALSE FALSE FALSE
> lower.tri(m)
      [,1]  [,2]  [,3]
[1,] FALSE FALSE FALSE
[2,]  TRUE FALSE FALSE
[3,]  TRUE  TRUE FALSE
> upper.tri(m) * m
     [,1] [,2] [,3]
[1,]    0    2    3
[2,]    0    0    6
[3,]    0    0    0
> lower.tri(m) * m
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    4    0    0
[3,]    7    8    0
> upper.tri(m, diag = T) * m #상삼각행렬, 행렬의 곱이 아닌 같은 위치의 원소끼리의 곱이다.
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    0    5    6
[3,]    0    0    9
> lower.tri(m, diag = T) * m #하삼각행렬
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    4    5    0
[3,]    7    8    9
> 

7 행렬 생성 방법: t()를 이용한 전치행렬 #

> #전치행렬: 행을 열로 하고 열을 행으로 하는 행렬
> a <- 1:9
> A <- matrix(a, ncol=3)
> A
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> t(A)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> 

8 행렬의 연산 #


댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

인생은 하나의 실험이다. 실험이 많아질수록 당신은 더 좋은 사람이 된다. (에머슨)