/ R

R 기초강의(6) - R 자료구조(matrix)

R 강좌는 여러 절로 구성되어 있습니다.


R matrix

Matrix 자료구조는 동일한 자료형을 갖는 2차원의 배열 구조를 의미합니다.

matrix 생성방법 - matrix() 함수

  • c() 함수를 이용하여 matrix를 생성할 수 있습니다. c()함수는 기본적으로 열을 기준으로 matrix를 생성합니다.
  • 예시를 통해 matrix를 생성하는 다양한 방법을 익히도록 합니다.
# matrix 생성

var1 = matrix(c(1:5))   # 열을 기준으로 matrix 생성
var1                    # 5행 1열 matrix

# nrow 속성을 이용해여 지정된 행을 가지는 matrix 생성
# 열 기준으로 데이터가 채워진다. 

var2 = matrix(c(1:10), nrow=2)
var2                            # 2행 5열의 matrix
                                

# nrow 속성 사용시 만약 행과 열의 수가 일치하지 않는 경우

var3 = matrix(c(1:13), nrow=3)
var3                          

# matrix 생성 시 행 우선으로 데이터를 생성하는 경우

var4 = matrix(c(1:10), nrow=2, byrow=T)
var4                      

# vector를 대상으로 rbind()는 행 묶음으로 matrix를 생성
# vector를 대상으로 cbind()는 열 묶음으로 matrix를 생성

var5 = c(1,2,3,4)
var6 = c(5,6,7,8)

mat1 = rbind(var5, var6)
mat1         

mat2 = cbind(var5, var6)
mat2

# 데이터 타입과 데이터 구조 확인
mode(mat1)             # numeric
class(mat1)            # matrix

matrix 접근 방법

  • matrix의 원소를 참조하기 위해서는 변수명[첨자,첨자] 형식으로 행과 열을 지정하여 원소에 접근합니다.
  • 특정 행이나 특정 열만을 접근하는 경우 변수명[행첨자,], 변수명[,열첨자] 형식으로 지정할 수 있습니다.
# matrix의 원소 접근

var1 = matrix(1:21, nrow=3, ncol=7)
var1

var1[2,2]             # 2행 2열 : 5

var1[2,]              # 2행

var1[,3]              # 3열

var1[c(1,3), c(5:7)]     # 1,3행 & 5~7열

length(var1)             # 모든 원소 개수 : 21
nrow(var1)               # 행 개수 : 3
ncol(var1)               # 열 개수 : 7

# matrix적용 함수 : apply()
# X : matrix, MARGIN : 1이면 행, 2면 열
# FUN : 행렬 자료구조에 적용할 함수

apply(X=var1, MARGIN=1, FUN=max)    # 행단위 최대값

apply(X=var1, MARGIN=2, FUN=min)    # 열단위 최소값

matrix 연산

  • matrix의 element단위의 곱 연산을 수행할 수 있습니다.
  • matrix의 전치행렬을 쉽게 구할 수 있습니다.
  • matrix product(행렬곱)을 쉽게 구할 수 있습니다.
  • matrix inversion(역행렬)을 쉽게 구할 수 있습니다.
# matrix 연산

var1 = matrix(c(1:6), ncol=3)
var1

var2 = matrix(c(1,-1,2,-2,1,-1), ncol=3)
var2

var1*var2   # elementwise product(element단위의 곱연산)

t(var1)     # transpose matrix (전치행렬)

var3 = matrix(c(1,-1,2,-2,1,-1), ncol=2)
var3

var1 %*% var3   # matrix product (행렬곱)

# 역행렬 : matrix A가 nxn matrix일 때, 
# 아래를 만족하는 nxn matrix B가 존재하면 B를 A의 역행렬이라 한다.
# AB = BA = I(단위행렬 E)
# 가우스 조던 소거법을 이용하여 계산.

var1 = matrix(c(1,2,3,3,0,1,5,4,2), ncol=3)
var1

solve(var1)     # matrix inversion (역행렬)

R array

Array 자료구조는 동일한 자료형을 갖는 다차원의 배열 구조를 의미합니다. 행렬과 유사하게 첨자로 접근해서 사용합니다. 하지만 다른 자료구조에 비해 활용도는 낮습니다.

간단하게 array를 생성하는 방법만 알아보겠습니다.

# array 생성

var1 = array(c(1:24), dim=c(3,2,4)) # 1~24의 데이터를 이용
                                # 3행 2열 4면의 3차원 array 생성

var1 

End.


이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!