쭈쌤
쭈쌤 Hello World

[R] 자료구조(2)-행렬

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[R] 자료구조(2)-행렬≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[R] 자료구조(2)-행렬

R에서 다룰 수 있는 연속성 자료형으로서 행렬 구조가 있습니다. 행렬은 백터에 의 수를 지정하여 나누어 표현한 형태 입니다.

#01. 행렬 생성하기

1) 2행 3열의 행렬 만들기

백터를 matrix()함수에 전달하여 행렬로 변환한다. 이 때 전달되는 두 번째 파라미터가 행의 수를 결정하며 열의 수는 자동으로 계산되어 지고 값은 왼쪽 열부터 차례대로 채워진다.

만약 지정된 행의 수가 열을 나누기에 적합하지 않다면 에러가 발생한다.

1
2
3
4
v <- c(1, 2, 3, 4, 5, 6)
a <- matrix(v, ncol=3)
a
typeof(a)
▶ 출력결과
1
2
3
4
5
A matrix: 2 × 3 of type dbl
1	3
2	4

'double'

2) 생성된 행렬의 크기 확인하기

nrow()는 행렬의 행의 크기를 반환하고 col() 함수는 열의 크기를 반환한다.

1
2
nrow(a)
ncol(a)
▶ 출력결과
1
2
2
3

3) 단일 원소에 접근하기

행,열 순으로 인덱스 번호를 명시하여 접근한다.

1
a[1,2]
▶ 출력결과
1
3

4) 행렬의 값이 채워지는 방향 변경하기

byrow=TRUE 파라미터를 TRUE로 설정하면 행렬을 생성하면서 값들을 열 우선으로 채워넣는다.

1
2
3
v <- c(1, 2, 3, 4, 5, 6, 7, 8)
b <- matrix(v, ncol=4, byrow=TRUE)
b
▶ 출력결과
1
2
3
A matrix: 2 × 4 of type dbl
1	2	3	4
5	6	7	8

#02. 원소에 접근하는 다양한 방법

1) 샘플 행렬 생성

1
2
3
v <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
mat <- matrix(v, ncol=3, byrow=TRUE)
mat
▶ 출력결과
1
2
3
4
A matrix: 3 × 3 of type dbl
1	2	3
4	5	6
7	8	9

2) 샘플 행렬에서 2행의 모든 데이터 가져오기

1
mat[2, ]
▶ 출력결과
1
2
3
4
5
6

3) 샘플 행렬에서 2~3행의 모든 데이터 가져오기

1
mat[2:3, ]
▶ 출력결과
1
2
3
A matrix: 2 × 3 of type dbl
4	5	6
7	8	9

4) 샘플 행렬에서 2행을 제외하는 모든 데이터 가져오기

1
mat[-2, ]
▶ 출력결과
1
2
3
A matrix: 2 × 3 of type dbl
1	2	3
7	8	9

#03. 행렬에 이름 지정하기

1) 샘플 행렬 만들기

dimnames 파라미터로 벡터를 원소로 갖는 리스트 객체를 할당하여 행,열에 대한 이름을 부여할 수 있다.

1
2
3
4
5
6
v <- c(98, 82, 74, 87, 98, 72)

# 행렬의 행과 열에 이름 지정하기
e <- matrix(v, nrow=2, dimnames=list(c("철수", "민철"),
                                     c("국어", "영어", "수학")))
e
▶ 출력결과
1
2
3
4
A matrix: 2 × 3 of type dbl
      국어	영어	수학
철수   98	74	98
민철   82	87	72

2) 행,열에 이름을 갖는 행렬의 데이터에 접근하기

1
2
#
e["철수","영어"]
▶ 출력결과
1
74

#04. 같은 크기를 갖는 행렬끼리의 연산

1) 두 개의 샘플 행렬 만들기

1
2
3
4
5
6
v <- c(1, 2, 3, 4)
x <- matrix(v, nrow=2, byrow=TRUE)
x

y <- matrix(v, nrow=2, byrow=FALSE)
y
▶ 출력결과
1
2
3
4
5
6
7
A matrix: 2 × 2 of type dbl
1	2
3	4

A matrix: 2 × 2 of type dbl
1	3
2	4

2) 행렬 계산

모든 원소에 10씩 더함 (사칙,비교,논리 연산 가능)

1
x + 10
▶ 출력결과
1
2
3
A matrix: 2 × 2 of type dbl
11	12
13	14
1
x * y    # 두 행렬에서 같은 위치의 원소끼리 연산 (사칙,비교,논리 연산 가능)
▶ 출력결과
1
2
3
A matrix: 2 × 2 of type dbl
1	6
6	16

역행렬 구하기

1
2
a <- solve(x)
a
▶ 출력결과
1
2
3
A matrix: 2 × 2 of type dbl
2.0	1.0
1.5	-0.5

전치행렬

1
2
k <- t(x)
k
▶ 출력결과
1
2
3
A matrix: 2 × 2 of type dbl
1	3
2	4
Rating:

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[R] 자료구조(2)-행렬≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus