이전 포스팅에 이어 이번 포스팅에서는 Matrix 구조에 대해 설명드리겠습니다.

이전 포스팅이 궁금하신 분들은 아래 링크를 클릭해주세요!

2021.06.14 - [R] - [R 기초] 자료 형태 및 구조_Vector

 

[R 기초] 자료형태 및 구조_Vector

1. 개요 1.1 자료 형태(Data Type) 개념 저장된 데이터의 성격을 말합니다. R의 기본 자료 형태는 5개가 존재합니다. 아래 [그림 1-1]을 참조하시기 바랍니다 [그림 1-1] R의 기본 자료 형태 종류 및 예시

boom-analysis.tistory.com

4. Matrix

4.1 Matrix 의미

  • Matrix는 우리나라 말로 행렬을 뜻합니다.
  • Vector와 마찬가지로, 한가지의 자료 유형만 저장이 가능합니다. 즉, 전체 데이터의 유형이 같아야 합니다.

 

4.2 Matrix 생성 방법

  • matrix() 함수를 사용하여 생성합니다.
  • ncol 인자를 사용하여 데이터의 열의 수를 지정하거나, nrow 인자를 사용하여 데이터의 행의 수를 지정하여 matrix를 생성합니다.
  • 또한, 행과 열의 수가 일치 하지 않는 경우, Matrix의 들어갈 값을 반복하여 채웁니다.
  • Vector와 마찬가지로, 다른 자료 형태로 생성한다면, 자동으로 형태를 변환하여 저장합니다.
var1 <- matrix(1:9, ncol = 3)
var1

# 결과 값 : 
#      [,1]  [,2]  [,3]
#[1,]    1    4    7
#[2,]    2    5    8
#[3,]    3    6    9

var2 <- matrix(1:9, nrow = 3)
var2

# 결과 값 : 
#     [,1]  [,2]  [,3]
#[1,]    1    4    7
#[2,]    2    5    8
#[3,]    3    6    9

# 형태 자동 변환
var3 <- matrix(1:9, nrow = 4)
var3
#      [,1]  [,2]  [,3]
# [1,]    1    5    9
# [2,]    2    6    1
# [3,]    3    7    2
# [4,]    4    8    3

# 형태 자동 변환(논리 형태와 숫자 형태로 생성)
var4 <- matrix(c(TRUE, FALSE, FALSE, TRUE, 10, 9), nrow = 3)
var4
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    1    1    9
# [2,]    0    1    2
# [3,]    0   10    3

 

  • 위 경우에는 열 기준으로 Matrix가 생성되는 것을 알 수 있습니다.
  • Matrix 값을 행 기준으로 생성하고 싶다면, byrow 인자를 사용하시면 됩니다.
var1 <- matrix(1:9, nrow = 4, byrow = TRUE)
var1
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    1    5    9
# [2,]    2    6    1
# [3,]    3    7    2
# [4,]    4    8    3

 

4.3 Matrix 데이터 추출

  • Matrix의 데이터를 추출하기 위해서는 Matrix이름[숫자1, 숫자2] 형식으로 행 및 열을 지정합니다. 여기서 숫자1은 행을 뜻하고 숫자2는 열을 뜻합니다.
  • 또한 특정 행 전체를 추출하고 싶으면 Matrix이름[숫자1, ]을, 특정 열 전체를 추출하고 싶으면 Matrix이름[ , 숫자2]를 사용합니다.
var1 <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), ncol = 3)

var1[1, 1]
# 결과 값 : 1

var1[1, 2]
# 결과 값 : 4

var1[2, 1]
# 결과 값 : 2

var1[1, ]
# 결과 값 : 1 4 7

var1[ , 2]
# 결과 값 : 4 5 6

 

4.4 Matrix 연산

4.4.1 사칙 연산

  • Matrix의 사칙 연산이 가능합니다.
var1 <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), ncol = 3)

var1 + 2
# 결과 값 : 
#      [,1]  [,2]  [,3]
# [1,]    3    6    9
# [2,]    4    7   10
# [3,]    5    8   11

var1 - 2
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]   -1    2    5
# [2,]    0    3    6
# [3,]    1    4    7

var1 * 2
# 결과 값 : 
#      [,1] [,2] [,3]
# [1,]    2    8   14
# [2,]    4   10   16
# [3,]    6   12   18

var1 / 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

 

4.4.2 Matrix 간 연산

  • Matrix의 사칙 연산이 가능합니다.
  • 또한 Matrix 간 연산도 가능합니다.
var1 <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), ncol = 3)

var1 + var1
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    2    8   14
# [2,]    4   10   16
# [3,]    6   12   18

var1 - var1
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    0    0    0
# [2,]    0    0    0
# [3,]    0    0    0

var1 / var1
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    1    1    1
# [2,]    1    1    1
# [3,]    1    1    1

var1 * var1
# 결과 값 :
#      [,1]  [,2]  [,3]
# [1,]    1   16   49
# [2,]    4   25   64
# [3,]    9   36   81

 

  • 행렬 곱은 %*% 을 사용합니다.
  • 역행렬은 solve() 함수를 사용합니다.
  • 전치행렬은 t() 함수를 사용합니다.
var1 <- matrix(1:4, ncol = 2)

var1 %*% var1
# 결과 값 : 
#      [,1]  [,2]
# [1,]    7   15
# [2,]   10   22

solve(var1)
# 결과 값 : 
#      [,1]  [,2]
# [1,]   -2  1.5
# [2,]    1 -0.5

t(var1)
# 결과 값 : 
#      [,1]  [,2]
# [1,]    1    2
# [2,]    3    4

ncol(var1)

nrow(var1)

 

  • 열의 갯수는 ncol() 함수로, 행의 갯수는 nrow() 함수로 구할 수 있습니다.
var1 <- matrix(1:6, ncol = 2)

ncol(var1)
# 결과 값 : 2

nrow(var1)
# 결과 값 : 3

 

5. Array

5.1 Array 의미

  • Array는 우리나라 말로 배열을 뜻합니다.
  • Matrix가 2차원 행렬 이라면, Array는 n차원 행렬입니다.
  • 다른 구조에 비해 활용도가 낮습니다.

 

5.2 Array 생성 방법

  • array()함수를 사용하여 Array를 생성할 수 있습니다.
  • dim이라는 인자를 활용하여 n행, n열, n차원의 Array를 생성합니다.
# 2행 x 2열 x 3차원 Array 생성
var1 <- array(1:12, dim = c(2, 2, 3))
var1
# 결과 값 :
# , , 1
#
#        [,1]  [,2]
#  [1,]    1    3
#  [2,]    2    4

# , , 2
#
#        [,1]  [,2]
# [1,]    5    7
# [2,]    6    8
#
# , , 3
#
#        [,1]  [,2]
# [1,]    9   11
# [2,]   10   12

 

5.3 Array 데이터 추출

  • Array 데이터 추출은 Matrix 추출에 차원부분만 추가해서 Array이름[숫자1, 숫자2, 숫자3]으로 추출 가능합니다. 숫자 3은 차원을 뜻합니다.
var1 <- array(1:12, dim = c(2, 2, 3))

var1[2, 2, 3] # 2행 2열 3차원의 데이터 추출
# 결과 값 : 12

 

'R' 카테고리의 다른 글

[R 기초] 자료 형태 및 구조_Vector  (0) 2021.06.14
Object 개념 및 사용법  (0) 2021.06.13
프로젝트 생성 및 환경 설정  (0) 2021.06.11
R 및 R Studio 설치  (0) 2021.06.07
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기