R 기초강의(6) - R 자료구조(matrix)
R 강좌는 여러 절로 구성되어 있습니다.
- R 기초강의(1) - R 개요
- R 기초강의(2) - R Operator
- R 기초강의(3) - R Data Type
- R 기초강의(4) - R 패키지와 함수
- R 기초강의(5) - R 자료구조(vector)
- R 기초강의(6) - R 자료구조(matrix)
- R 기초강의(7) - R 자료구조(factor, list)
- R 기초강의(8) - R 자료구조(data frame)
- R 기초강의(9) - R 문자열 처리
- R 기초강의(10) - R 데이터 입출력
- R 기초강의(11) - R 제어문 및 함수
- R 기초강의(12) - R 기초 Exercise
- R 기초강의(13) - R Crawling
- R 기초강의(14) - R 데이터 조작
- R 기초강의(15) - R 데이터 조작 실습
- R 기초강의(16) - R 데이터 정제
- R 기초강의(17) - R 기초 통계 함수
- R 기초강의(18) - R Graph
- R 기초강의(19) - R KoNLP
- R 기초강의(20) - R 연습문제
- R 기초강의(21) - R ggmap
- R 기초강의(22) - 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.
이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!