R
R 기초 5 - Matrix(2차원 배열)
코딩탕탕
2022. 10. 23. 16:22
행 = 가로
열 = 세로
# Matrix : 2차원 배열
a <- 1:8
dim(a) <- c(2, 4) # 열부터 채운다.
a
typeof(a) # integer
class(a) # "matrix" "array"
mode(a) # "numeric"
m <- matrix(1:5)
m
dim(m)
# m <- matrix(c(1:9), nrow=3)
m <- matrix(c(1:9), nrow=3, byrow = T) # 1 ~ 9까지 3열 호출
m
dim(m)
m <- matrix(1:10, 2) # 1 ~ 10까지 2행으로 호출
m
# m <- matrix(1:10, 3) 1 ~ 10까지 3행로 호출
m
class(m) # "matrix" "array"
m[1,] # 1행 호출
m[1, 1] # 1행 1열 호출
m[, 3] # 3열 호출 err 없음
m[c(1,3),c(2:4)]
m[-1,]
a <- matrix(c(1:9), nrow=3, ncol=3) # 3행 3열
a
rownames(a) <- c('r1', 'r2', 'r3') # 행 이름 바꿈
colnames(a) <- c('one', 'two', 'three') # 열 이름 바꿈
a
nrow(a)
NROW(a) # 행의 갯수
dim(a) # 행과 열 갯수
length(a) # 총 갯수
a <- matrix(c(1,2,3,4,5), 2, 2) # 1 ~ 5중에 2행 2열까지
b <- matrix(5:8, 2, 2) # 5 ~ 8중에 2행 2열까지
a
b
a + 10
a + b
a * b # 아다마드 곱
a %*% b #행렬 곱만 가능
# 행렬 곱 : 도형의 면적, 부피 계산, 머신러닝의 차원축소,
# 딥러닝에서 입력자료와 가중치 연산 등을 할 때 사용
# a %+% b 불가
a
diag(a) # 왼쪽 위부터 대각선 값 호출
diag(2)
a
t(a) # 행렬전환 (transpose : 전치)
solve(a) # 역행렬
solve(solve(a))
solve(a) %*% a
x1 <- c(5, 40, 50:52)
x2 <- c(30, 5, 6:8)
x1
x2
mr <- rbind(x1, x2) # 값 갯수대로 열로 만들어준다.
mr
mc <- cbind(x1, x2) # 값 갯수대로 행으로 만들어준다.
mc
dim함수는 행과 열의 갯수를 얘기한다.
행렬 곱은 행과 열이 같아야한다.
행렬 곱곱
a
[,1] [,2]
[1,] 1 3
[2,] 2 4
b
[,1] [,2]
[1,] 5 7
[2,] 6 8
a %*% b #행렬 곱곱
[,1] [,2]
[1,] 23 31
[2,] 34 46

행렬 곱셈 링크 참조
행렬의 곱셈, 행렬의 거듭제곱
행렬의 곱셈은 행렬의 실수배에 비하면 훨씬 어려워요. 행렬을 곱할 수 있는 조건이 있어 이 조건을 만족하지 않으면 곱셈을 하지 못하는 경우도 있어요. 게다가 계산방식도 매우 까다롭죠. 도
mathbang.net