Home | Print | Q/A | Guest | NewsLetter
Display context of search results Case-sensitive searching
Database System
Data Warehouse
Data Analysis
Operating System
Open Source
Enterprise Architecture
Software Engineering
Process
Working Smart

SQL Server
PostgreSQL
Oracle
DB2
Teradata
MySQL
Performance Tuning
Programming

Link
Philosophy
Tools
Misc
주인놈
_
_
SideBar Edit

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|FindPage|DeletePage|LikePages|http://www.databaser.net|last modified 2010-03-08 17:38:18