7.1 행렬 만들기 : matrix()
함수이용
matrix()
함수를 사용하여 행렬(matrix)을 만들 수 있습니다.
행렬의 차원은 nrow
와 ncol
인수에 적절한 값을 전달하여 정의할 수 있습니다.
두 차원 모두에 대한 값을 제공할 필요는 없습니다. 차원 중 하나가 제공되면 다른 차원은 데이터 길이에서 유추가 되어 처리됩니다.
matrix()
함수의 형식은 다음과 같습니다.
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
data
: 데이터nrow
: 행의 차원(갯수)ncol
: 열의 차원(갯수)byrow
: 행 우선 여부 (기본값은 FASLE, 즉 열 우선)dimnames
: 행과 열의 이름
7.1.1 행렬 만들기
행렬을 생성하는 예를 들어 보겠습니다.
<- matrix(c(4, 2, 3, 5, 4, 7), nrow = 2) # 6개의 요소를 갖는 벡터를 2차원 행렬로 생성합니다. 행은 2입니다.
x1 # 열 우선(첫 번째 열부터 행을 채워감)으로 요소가 채워집니다. x1
## [,1] [,2] [,3]
## [1,] 4 3 4
## [2,] 2 5 7
<- matrix(c(4, 2, 3, 5, 4, 7), ncol = 2) # 열의 차원을 2로 정하고 있습니다. 행의 차원은 3으로 유추됩니다.
x2 # 열 우선으로 요소가 채워집니다. x2
## [,1] [,2]
## [1,] 4 5
## [2,] 2 4
## [3,] 3 7
7.1.2 행 우선으로 채우기
행렬이 열 우선으로 채워진 것을 볼 수 있습니다. byrow
인수에 TRUE
값을 전달하여 행 우선 채우기로 되돌릴 수 있습니다.
<- matrix(c(4, 2, 3, 5, 4, 7), nrow = 2, byrow = TRUE) # 행 우선으로 요소가 채워집니다
x3 x3
## [,1] [,2] [,3]
## [1,] 4 2 3
## [2,] 5 4 7
<- matrix(c(4, 2, 3, 5, 4, 7), ncol = 2, byrow = TRUE) # 열 우선으로 요소가 채워집니다.
x4 x4
## [,1] [,2]
## [1,] 4 2
## [2,] 3 5
## [3,] 4 7
그러나 모든 경우에 행렬은 이후 절에서도 볼 수 있듯이 내부적으로 열 우선 순서로 저장됩니다.
7.1.3 차원에 이름 붙이기
한편 2개의 요소(행의 이름과 열의 이름 각각의 문자형 벡터)를 갖는 리스트를 인수 dimnames
에 전달하여 행렬을 생성하면서 행렬의 행과 열에 이름을 지정할 수 있습니다.
<- c(4, 2, 3, 5, 4, 7) # 행렬을 이루는 요소들의 1차원 벡터입니다.
data <- list(c("row1", "row2"), # 첫번째 요소는 행의 이름을 나타내는 문자형 벡터입니다.
mat.names c("col1", "col2", "col3")) # 두번째 요소는 열의 이름을 나타내는 문자형 벡터입니다.
<- matrix(data, nrow = 2, dimnames = mat.names) # dimnames의 인수로 리스트를 할당합니다.
x5 x5
## col1 col2 col3
## row1 4 3 4
## row2 2 5 7