# 매트릭스
## 목차
1. 매트릭스란?
2.
## 매트릭스란?
매트릭스란, 행과 열로 이루어진 데이터 구조입니다. 매트릭스는 다음과 같이 생성 할 수 있습니다.
```
# 1부터 9까지 요소를 생성
# 한 줄씩 채워 넣음
# 3행을 갖는도록 함
matrix(1:9, byrow = TRUE, nrow = 3)
```
## 매트릭스 이름 붙이기
다음과 같은 벡터를 생성해봅시다.
```
tom <- c(96, 82)
elena <- c(86, 92)
paul <- c(93, 88)
```
위에서 생성한 벡터를 매트릭스로 만들어 봅시다.
```
vector = c(tom, elena, paul)
matrix = matrix(vector, byrow = TRUE, nrow = 3)
```
생성된 벡터에 이름을 붙여줍시다.
```
names <- c("Tom", "Elena", "Paul")
subjects <- c("Math", "English")
rownames(matrix) <- names
colnames(matrix) <- subjects
```
최종 matrix를 출력해보면 다음과 같습니다.
```
Math English
Tom 96 82
Elena 86 92
Paul 93 88
```
## 매트릭스 연산
각 행 별 합계를 내볼까요?
```
total <- rowSums(matrix)
```
합계 매트릭스를 기존 매트릭스와 합쳐봅시다. cbind() 함수는 매트릭스에 열을 추가시킬 수 있습니다.
```
result <- cbind(matrix, total)
```
result 매트릭스의 출력결과는 아래와 같습니다.
```
Math English total
Tom 96 82 178
Elena 86 92 178
Paul 93 88 181
```
이번에는 rbind() 함수를 사용하여 행을 추가해 볼까요?
```
john <- matrix(c(90, 90, 180), byrow = TRUE, nrow = 1)
rownames(john) <- "John"
result <- rbind(result, john)
```
`result` 매트릭스의 결과는 다음과 같습니다.
```
Math English total
Tom 96 82 178
Elena 86 92 178
Paul 93 88 181
John 90 90 180
```
colSums() 함수도 사용해 봐야겠죠?
```
colSums(result)
```
결과입니다.
```
Math English total
365 352 717
```
## 매트릭스 선택
매트릭스의 요소를 선태하는 방법은 다양 합니다.
+ `matrix[1,1]`: 1행 1열의 요소를 선택
+ matrix[1, ]: 1행 전체를 선택
+ matrix[ , 1]: 1열 전체를 선택
+ matrix[1:3, 2:4]: 1~3행, 2~4열을 선택
## 매트릭스 연산
매트릭스에 기본적인 연산(`+`, `-`, `*`, `/`)이 가능합니다.
```
# 모든 요소를 10으로 나눔
matrix <- matrix / 10
```
수학 과목에 대한 평균을 구해볼까요?
```
math = result[ , 1]
mean(math)
```
수행 결과입니다.
```
# math
Tom Elena Paul John
96 86 93 90
# mean(math)
[1] 91.25
```