Chapter 8 Matrix

8.1 행렬 생성하기

m1 = matrix(1:6, nrow = 2, ncol = 3)
m1
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

matrix() 함수를 이용해 행렬을 생성할 수 있으며, nrow와 ncol을 통해 행과 열 갯수를 지정할 수 있습니다.

m2 = matrix(letters[1:6], nrow = 2, ncol = 3)
m2
##      [,1] [,2] [,3]
## [1,] "a"  "c"  "e" 
## [2,] "b"  "d"  "f"

문자 형태로 이루어진 행렬 역시 생성할 수 있습니다. 그러나 숫자와 문자가 한 행렬 내에서 같이 사용될 수는 없습니다.

v1 = 1:4
v2 = 5:8
cbind(v1, v2)
##      v1 v2
## [1,]  1  5
## [2,]  2  6
## [3,]  3  7
## [4,]  4  8
rbind(v1, v2)
##    [,1] [,2] [,3] [,4]
## v1    1    2    3    4
## v2    5    6    7    8

cbind() 함수는 열로 데이터를 합치며, rbind() 함수는 행으로 데이터를 합칩니다.

8.2 기존 행렬에 데이터 추가하기

cbind()rbind() 함수를 이용해 기존 행렬에 데이터를 추가할 수 있습니다.

m1 = cbind(v1, v2)
m1
##      v1 v2
## [1,]  1  5
## [2,]  2  6
## [3,]  3  7
## [4,]  4  8
v3 = 9:12
cbind(m1, v3)
##      v1 v2 v3
## [1,]  1  5  9
## [2,]  2  6 10
## [3,]  3  7 11
## [4,]  4  8 12

8.3 행이름 및 열이름 추가하기

m2 = matrix(1:12, nrow = 4, ncol = 3)
m2
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
rownames(m2) = c('row1', 'row2', 'row3', 'row4')
m2
##      [,1] [,2] [,3]
## row1    1    5    9
## row2    2    6   10
## row3    3    7   11
## row4    4    8   12
colnames(m2) = c('col1', 'col2' ,'col3')
m2
##      col1 col2 col3
## row1    1    5    9
## row2    2    6   10
## row3    3    7   11
## row4    4    8   12

rownames()colnames() 함수를 이용해 행 및 열이름을 직접 지정할 수 있습니다.

8.4 행렬 추출하기

행렬 역시 대괄호를 이용해 데이터를 추출할 수 있으며, 공백으로 둘시 모든 행(열)을 선택하게 됩니다.

m2
##      col1 col2 col3
## row1    1    5    9
## row2    2    6   10
## row3    3    7   11
## row4    4    8   12
m2[1:2, ]
##      col1 col2 col3
## row1    1    5    9
## row2    2    6   10
m2[ , c(1,3)]
##      col1 col3
## row1    1    9
## row2    2   10
## row3    3   11
## row4    4   12
m2[1:2, c(1,3)]
##      col1 col3
## row1    1    9
## row2    2   10

만일 하나의 열만 선택시 결과가 벡터 형태로 출력되며, drop = FALSE 인자를 추가해주면 행렬의 형태가 유지되어 출력됩니다.

m2[, 2]
## row1 row2 row3 row4 
##    5    6    7    8
m2[, 2, drop = FALSE]
##      col2
## row1    5
## row2    6
## row3    7
## row4    8