안녕하세요. 언제나 휴일에 언휴예요.
지난 강의에서 같은 종류의 데이터를 선형 집합인 vector를 살펴보았어요.
#벡터 > v1 = c(1,2,3,4,5,6)
이번 강의는 matrix 소개와 기본적인 사용방법을 강의합니다.
matrix 생성 원하는 요소 확인하기 matrix 결합1. 열 결합 cbind matrix 결합2. 행 결합 rbind 전치 행렬을 구할 때 t() 행렬 헤더에 이름 부여 dimnames
matrix 생성
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
matix는 같은 종류의 데이터를 평면인 사각 영역에 보관하는 자료구조입니다.
matrix 함수를 이용하여 생성할 수 있어요.
첫 번째 인자로 matrix를 구성할 자료를 전달합니다.
nrow에 행 개수, ncol에 열 개수를 전달하여 생성합니다.
> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3) > A [,1] [,2] [,3] [1,] 5 3 8 [2,] 7 4 6
생성하는 순서를 보시면 열(column) 먼저 만드는 것을 알 수 있어요.
행(row) 먼저 만들고자 한다면 byrow=TRUE로 지정하세요.
> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE) > A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6
원하는 요소 확인하기
matrix의 원하는 행을 표현할 때는 행렬[행 번호,] 형태로 표현합니다.
행렬[,열번호]로 원하는 열을 표현할 수 있습니다.
> A [,1] [,2] [,3] [1,] 5 3 8 [2,] 7 4 6 > A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE) > A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > A[2,] [1] 4 8 6 > A[,3] [1] 3 6
물론, 여러 개의 행과 여러 개의 열도 표현 가능합니다.
c함수를 이용하거나 start:end 등 다양한 형태로 여러 개의 행이나 열을 표현할 수 있어요.
> A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > A[,c(1,3)] [,1] [,2] [1,] 5 3 [2,] 4 6 > A[,1:2] [,1] [,2] [1,] 5 7 [2,] 4 8 > A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > A[,1:2] [,1] [,2] [1,] 5 7 [2,] 4 8 > A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > A[,c(1,3)] [,1] [,2] [1,] 5 3 [2,] 4 6 > A[,1:2] [,1] [,2] [1,] 5 7 [2,] 4 8
행과 열을 모두 표현해서 원하는 쉘을 표현할 수도 있습니다.
다음은 행렬 A의 1행 1열의 값을 확인하는 것과 1행 1열의 값을 7로 변경하는 예입니다.
> A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > A[1,1] [1] 5 > A[1,1]=7 > A [,1] [,2] [,3] [1,] 7 7 3 [2,] 4 8 6
matrix 결합1. 열 결합 cbind
matrix의 행의 개수가 같을 때 cbind함수로 열 결합을 할 수 있어요.
> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE) > A [,1] [,2] [,3] [1,] 5 7 3 [2,] 4 8 6 > B=matrix(c(1,2),nrow=2,ncol=1,byrow=TRUE) > B [,1] [1,] 1 [2,] 2 > C = cbind(A,B) > C [,1] [,2] [,3] [,4] [1,] 5 7 3 1 [2,] 4 8 6 2
matrix 결합2. 행 결합 rbind
matrix의 열의 개수가 같을 때 rbind함수로 열 결합을 할 수 있어요.
> A = matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,ncol=3) > B = matrix(c(10,11,12),nrow = 1,ncol=3) > A [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > B [,1] [,2] [,3] [1,] 10 11 12 > C = rbind(A,B) > C [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 [4,] 10 11 12
전치 행렬을 구할 때 t()
t(x) : returns transpose of x
전치(transpose) 행렬을 구할 때 t함수를 사용하세요.
> A = matrix(c(1,2,3,4,5,6),nrow=2,ncol=3) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > B=t(A) > B [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5 6
행렬 헤더에 이름 부여 dimnames
dimnames(x)
dimnames(x) <- value
dimnames(x) = value
행렬 헤더에 이름을 부여하거나 설정할 때 dimnames 함수를 사용하세요.
> A = matrix(c(1,2,3,4,5,6),nrow=2,ncol=3) > dimnames(A) = list(c("r1","r2"),c("c1","c2","C3")) > A c1 c2 C3 r1 1 3 5 r2 2 4 6 > dimnames(A) [[1]] [1] "r1" "r2" [[2]] [1] "c1" "c2" "C3"