7.1 행렬 만들기 : matrix() 함수이용

matrix() 함수를 사용하여 행렬(matrix)을 만들 수 있습니다.

행렬의 차원은 nrowncol 인수에 적절한 값을 전달하여 정의할 수 있습니다.

두 차원 모두에 대한 값을 제공할 필요는 없습니다. 차원 중 하나가 제공되면 다른 차원은 데이터 길이에서 유추가 되어 처리됩니다.

matrix() 함수의 형식은 다음과 같습니다.

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

  • data : 데이터
  • nrow : 행의 차원(갯수)
  • ncol: 열의 차원(갯수)
  • byrow : 행 우선 여부 (기본값은 FASLE, 즉 열 우선)
  • dimnames : 행과 열의 이름

7.1.1 행렬 만들기

행렬을 생성하는 예를 들어 보겠습니다.

x1 <- matrix(c(4, 2, 3, 5, 4, 7), nrow = 2)   # 6개의 요소를 갖는 벡터를 2차원 행렬로 생성합니다. 행은 2입니다.
x1                                            # 열 우선(첫 번째 열부터 행을 채워감)으로 요소가 채워집니다.
##      [,1] [,2] [,3]
## [1,]    4    3    4
## [2,]    2    5    7
x2 <- matrix(c(4, 2, 3, 5, 4, 7), ncol = 2)   # 열의 차원을 2로 정하고 있습니다. 행의 차원은 3으로 유추됩니다.
x2                                            # 열 우선으로 요소가 채워집니다.
##      [,1] [,2]
## [1,]    4    5
## [2,]    2    4
## [3,]    3    7

7.1.2 행 우선으로 채우기

행렬이 열 우선으로 채워진 것을 볼 수 있습니다. byrow 인수에 TRUE값을 전달하여 행 우선 채우기로 되돌릴 수 있습니다.

x3 <- matrix(c(4, 2, 3, 5, 4, 7), nrow = 2, byrow = TRUE)    # 행 우선으로 요소가 채워집니다
x3
##      [,1] [,2] [,3]
## [1,]    4    2    3
## [2,]    5    4    7
x4 <- matrix(c(4, 2, 3, 5, 4, 7), ncol = 2, byrow = TRUE)    # 열 우선으로 요소가 채워집니다.
x4 
##      [,1] [,2]
## [1,]    4    2
## [2,]    3    5
## [3,]    4    7

그러나 모든 경우에 행렬은 이후 절에서도 볼 수 있듯이 내부적으로 열 우선 순서로 저장됩니다.

7.1.3 차원에 이름 붙이기

한편 2개의 요소(행의 이름과 열의 이름 각각의 문자형 벡터)를 갖는 리스트를 인수 dimnames에 전달하여 행렬을 생성하면서 행렬의 행과 열에 이름을 지정할 수 있습니다.

data <- c(4, 2, 3, 5, 4, 7)                      # 행렬을 이루는 요소들의 1차원 벡터입니다.
mat.names <- list(c("row1", "row2"),             # 첫번째 요소는 행의 이름을 나타내는 문자형 벡터입니다.
                  c("col1", "col2", "col3"))     # 두번째 요소는 열의 이름을 나타내는 문자형 벡터입니다.
x5 <- matrix(data, nrow = 2, dimnames = mat.names)          # dimnames의 인수로 리스트를 할당합니다.
x5
##      col1 col2 col3
## row1    4    3    4
## row2    2    5    7