더북(TheBook)

행렬과 스칼라 간의 사칙 연산에서는 일반적인 프로그래밍과 마찬가지로 +, -, *, /를 사용한다.

> x <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3)
> x * 2
     [,1] [,2] [,3]
[1,]    2    8   14
[2,]    4   10   16
[3,]    6   12   18
> x / 2
     [,1] [,2] [,3]
[1,]  0.5  2.0  3.5
[2,]  1.0  2.5  4.0
[3,]  1.5  3.0  4.5

행렬 간의 덧셈과 뺄셈에는 +와 -를 사용한다.

> x <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3)
> x + x
     [,1] [,2] [,3]
[1,]    2    8   14
[2,]    4   10   16
[3,]    6   12   18
> x - x
    [,1] [,2] [,3]
[1,]   0    0    0
[2,]   0    0    0
[3,]   0    0    0

행렬 곱에는 %*%를 사용한다.

> x <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3)
> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> x %*% x
     [,1] [,2] [,3]
[1,]   30   66  102
[2,]   36   81  126
[3,]   42   96  150

전치행렬은 t( )로 구한다.

> (x <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3))
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> t(x)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

역행렬은 solve( )로 계산한다. 다음은 행렬 x의 역행렬을 구한 뒤 x와 곱해 그 결과가 단위행렬Identity Matrix이 되는지 확인하는 예다.

> (x <- matrix(c(1, 2, 3, 4), ncol=2))
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> solve(x)
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5
> x %*% solve(x)
     [,1] [,2]
[1,]    1    0
[2,]    0    1

행렬의 차원은 nrow( ), ncol( )로 알 수 있으며, 각각 행의 수와 열의 수를 반환한다.

> (x <- matrix(c(1, 2, 3, 4, 5, 6), ncol=3))
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> nrow(x)
[1] 2
> ncol(x)
[1] 3

dim( )은 행렬뿐만 아니라 다양한 데이터 타입(예를 들면, 다음 절에서 설명하는 배열)에 적용 가능한 일반(범용) 함수Generic Function로, 데이터의 차원을 벡터로 반환한다. dim( )의 반환 값에 새로운 차원을 지정하면 데이터의 차원을 변경할 수 있다는 점이 특이하다. 다음은 2×3 차원의 행렬을 생성한 뒤 3×2 차원으로 바꾼 예다.

> x <- matrix(c(1, 2, 3, 4, 5, 6), ncol=3)
> dim(x)
[1] 2 3
> x
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> dim(x) <- c(3, 2)
> x
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.