7.6 행렬의 수정
7.6.1 행렬의 수정
위에서 행렬에 대한 접근방법을 할당 연산자와 결합하면 행렬을 수정할 수 있다.
mat
## col.1 col.2 col.3 col.4
## row.1 1 5 3 6
## row.2 3 6 4 8
## row.3 2 4 8 7
2,2] <- 10; mat # 2행 2열의 단일 요소 값을 수정합니다. mat[
## col.1 col.2 col.3 col.4
## row.1 1 5 3 6
## row.2 3 10 4 8
## row.3 2 4 8 7
< 5] <- 0; mat # 5보다 작은 요소의 값은 모두 0으로 수정합니다. mat[mat
## col.1 col.2 col.3 col.4
## row.1 0 5 0 6
## row.2 0 10 0 8
## row.3 0 0 8 7
7.6.2 행과 열의 추가
rbind()
와cbind()
함수를 사용하여 행이나 열을 각각 추가 할 수 있습니다.
mat
## col.1 col.2 col.3 col.4
## row.1 0 5 0 6
## row.2 0 10 0 8
## row.3 0 0 8 7
# cbind() 함수를 이용하여 열 벡터를 추가합니다.
<- cbind(mat, c(7, 6, 7)) # mat 행렬에 (7 6 7) 컬럼을 추가합니다
mat mat
## col.1 col.2 col.3 col.4
## row.1 0 5 0 6 7
## row.2 0 10 0 8 6
## row.3 0 0 8 7 7
# rbind() 함수를 이용하여 행 벡터를 추가합니다.
<- rbind(mat, c(1,2,3)) # c(1, 2, 3)과 같이 요소 수가 적은 경우 mat
## Warning in rbind(mat, c(1, 2, 3)): number of columns of result is not a multiple
## of vector length (arg 2)
# 경고메시지가 나타나며, 자동반복으로 채워집니다. mat
## col.1 col.2 col.3 col.4
## row.1 0 5 0 6 7
## row.2 0 10 0 8 6
## row.3 0 0 8 7 7
## 1 2 3 1 2
7.6.3 행렬의 서브세팅
앞에서 학습한 행렬 요소의 접근 방법으로 접근한 요소들을 새로운 변수에 할당연산자로 할당하여 행렬을 서브 세팅할 수 있습니다.
# 행렬 mat를 생성합니다.
<- rbind(c(1, 5, 3, 6),
mat c(3, 6, 4, 8),
c(2, 4, 8, 7))
mat
## [,1] [,2] [,3] [,4]
## [1,] 1 5 3 6
## [2,] 3 6 4 8
## [3,] 2 4 8 7
# 행과 열에 이름을 붙입니다.
rownames(mat) <- c("row.1", "row.2", "row.3")
colnames(mat) <- c("col.1", "col.2", "col.3", "col.4")
mat
## col.1 col.2 col.3 col.4
## row.1 1 5 3 6
## row.2 3 6 4 8
## row.3 2 4 8 7
## row와 col을 정수형 벡터로 색인합니다.
<- mat[c(1,2),c(2,3)] # 1 & 2행과 2 & 3열이 교차하는 요소를 서브세팅하여 mat1에 할당합니다.
mat1 <- mat[c(3,2), ] # 3행과 2열의 순서로 전체 열의 요소를 서브세팅하여 mat2로 할당합니다.
mat2 <- mat[-1,] # 1행을 제외한 요소를 서브세팅하여 mat3에 할당합니다. mat3