행렬은 matrix( )를 사용해 표현한다. 다음은 1, 2, 3, 4, 5, 6, 7, 8, 9로 구성된 3×3(3행 3열) 행렬을 만드는 방법을 보여준다.
> matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > 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
위의 예에서 볼 수 있듯이 행렬 생성 시에는 행렬 값을 나열한 뒤 ncol을 사용해 열의 수를 지정하거나 nrow를 사용해 행의 수를 지정한다. 이 예에서는 byrow 값이 생략되어 FALSE므로 행렬 값이 좌측 열부터 채워졌다(열 우선column major). 행렬 값을 위쪽 행부터 채우고 싶다면(행 우선row major) byrow=TRUE를 지정한다.
> matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3, byrow=TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
행렬의 행과 열에 명칭을 부여하고 싶다면 dimnames에 리스트로 행, 열의 이름을 지정한다. 리스트 내 첫 번째 벡터는 행의 이름, 두 번째 벡터는 열의 이름이어야 한다.
> 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
이미 만들어진 행렬에는 dimnames( )를 사용해 이름을 부여할 수 있다.
> (x <- matrix(1:9, ncol=3)) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > dimnames(x) <- list(c("r1", "r2", "r3"), c("c1", "c2", "c3")) > x c1 c2 c3 r1 1 4 7 r2 2 5 8 r3 3 6 9
dimnames( )가 행 이름과 열 이름을 한 번에 지정하는 것과 달리 rownames( ), colnames( )는 각각 행 이름, 열 이름 지정을 위해 특화된 함수다. 다음은 행 이름과 열 이름을 차례로 rownames( )와 colnames( )를 사용해 부여하는 예다.
> x <- matrix(1:9, ncol=3) > rownames(x) # 행 이름이 없으므로 NULL이 반환됨 NULL > rownames(x) <- c("r1", "r2", "r3") > x [,1] [,2] [,3] r1 1 4 7 r2 2 5 8 r3 3 6 9 > colnames(x) <- c("c1", "c2", "c3") > x c1 c2 c3 r1 1 4 7 r2 2 5 8 r3 3 6 9