R 자료구조(2) 행렬

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

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)

출력결과 A matrix: 2 × 3 of type dbl 1 3 2 4

1
'double'

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

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

1
2
nrow(a)
ncol(a)

출력결과 2 3

3) 단일 원소에 접근하기

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

1
a[1,2]

출력결과 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

출력결과 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

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

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

1
mat[2, ]

출력결과 4 5 6

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

1
mat[2:3, ]

출력결과 A matrix: 2 × 3 of type dbl 4 5 6 7 8 9

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

1
mat[-2, ]

출력결과 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

출력결과 A matrix: 2 × 3 of type dbl 국어 영어 수학 철수 98 74 98 민철 82 87 72

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

1
2
#
e["철수","영어"]

출력결과 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

출력결과 A matrix: 2 × 2 of type dbl 1 2 3 4

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

2) 행렬 계산

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

1
x + 10

출력결과 A matrix: 2 × 2 of type dbl 11 12 13 14

1
x * y    # 두 행렬에서 같은 위치의 원소끼리 연산 (사칙,비교,논리 연산 가능)

출력결과 A matrix: 2 × 2 of type dbl 1 6 6 16

역행렬 구하기

1
2
a <- solve(x)
a

출력결과 A matrix: 2 × 2 of type dbl 2.0 1.0 1.5 -0.5

전치행렬

1
2
k <- t(x)
k

출력결과 A matrix: 2 × 2 of type dbl 1 3 2 4

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

comments powered by Disqus