더북(TheBook)

행렬 데이터 접근

행렬은 색인 또는 행과 열의 이름을 통해 접근할 수 있다.

표 2-15 행렬 데이터 접근 문법

문법

의미

A[ridx, cidx]

행렬 A의 ridx행, cidx열에 저장된 값. 이때 ridx나 cidx에 벡터를 사용해 여러 값을 지정가능함. ridx나 cidx 중 하나를 생략하면 전체 행 또는 열을 의미함

행렬의 각 요소는 x[ridx, cidx] 형태로 접근한다. 이때 색인은 벡터의 경우와 마찬가지로 1부터 시작한다.

> (x <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), ncol=3))
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> x[1,1]
[1] 1
> x[1,2]
[1] 4
> x[2,1]
[1] 2
> x[2,2]
[1] 5

역시 벡터와 마찬가지로 ‘-색인’ 형태로 음수를 사용해 특정 행이나 열을 제외하거나, 색인에 벡터를 지정해 여러 값을 한 번에 가져올 수 있다. 만약 특정 행이나 열의 전체를 가져오고 싶다면 행이나 열에 아무런 색인도 기재하지 않으면 된다.

다음 코드는 1, 2행의 데이터를 가져온다.

> x[1:2, ]
    [,1] [,2] [,3]
[1,]   1    4    7
[2,]   2    5    8

같은 결과를 얻기 위해 3행을 제외하는 방법을 쓸 수도 있다.

> x[-3, ]
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8

색인에는 벡터를 지정할 수 있다. 다음은 1행, 3행, 1열, 3열의 값만 추출하는 경우다.

> x[c(1, 3), c(1, 3)]
     [,1] [,2]
[1,]    1    7
[2,]    3    9

만약 dimnames를 통해 행과 열에 이름을 부여했다면 그 이름을 직접 사용할 수도 있다. 다음은 r1이라는 이름을 부여한 첫 번째 행의 모든 열을 가져오는 예다.

> (x <- matrix(1:9, nrow=3,
+              dimnames=list(c("r1", "r2", "r3"), c("c1", "c2", "c3"))))
   c1 c2 c3
r1  1  4  7
r2  2  5  8
r3  3  6  9
> x["r1", ]
c1 c2 c3
 1  4  7
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.