해당 포스트는 R에서 행렬(matrix)을 생성할 때 사용되는
byrow
옵션에 대해 설명 합니다.
1. INTRO
R에서 2차원 형태의 데이터를 생성할 때에는 주로 행렬(Matrix)이나 데이터 프레임(Data Frame)을 사용하게 됩니다. 그 중에서도 숫자로만 이루어진 경우, 행렬(Matrix)을 주로 사용하게 되는데 이 때 자주 사용하는 byrow
옵션에 대해 설명합니다.
2. R에서 행렬(matrix) 생성
일반적으로 R에서 행렬(Matrix)을 생성하려 할 때에는 시퀀스 숫자를 바로 사용하거나 임의의 벡터를 생성 후 사용합니다. 아래는 동일한 행렬을 생성하는 다른 방식의 예시입니다.
1) 연속된 숫자로 행렬 생성
matrix(1:9, nrow = 3)
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
2) 벡터 생성 후 행렬 생성
my_vec <- c(1,2,3,4,5,6,7,8,9)
matrix(my_vec, nrow = 3)
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
3. byrow 옵션 사용
위에서 설명한 기본적인 행렬 생성 방법에 byrow
옵션을 사용한다면 사용자가 원하는 형태의 행렬을 생성할 수 있습니다.
byrow?
byrow
옵션은 행렬을 생성할 때, 원소 값을 채우는 방향 설정에 사용합니다. 기본값(Default)은byrow = F
로 원소값을 열 방향(세로)로 채우게 되며, 만약 행 방향(가로)로 채우고 싶다면byrow = T
로 설정해 주시면 됩니다.
1) 연속된 숫자로 행렬 생성 (byrow 사용 비교)
아래는 1부터 9까지의 수로 행렬을 생성하면서 행의 수는 3개이고 열 방향으로 값을 채우는 코드입니다.
값이 채워지는 순서
- (1, 1)
- (2, 1)
- (3, 1)
- (1, 2)
- ...
matrix(1:9, nrow = 3)
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
아래는 1부터 9까지의 수로 행렬을 생성하면서 행의 수는 3개이고 행 방향으로 값을 채우는 코드입니다.
값이 채워지는 순서
- (1, 1)
- (1, 2)
- (1, 3)
- (2, 1)
- ...
matrix(1:9, nrow = 3, byrow = T)
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
2) 벡터 생성 후 행렬 생성 (byrow 사용 비교)
아래는 1부터 9까지의 숫자가 들어있는 my_vec
변수를 생성하고, matrix()
함수로 행렬을 생성하는 코드입니다. byrow
옵션 유무에 따라 출력 결과가 달라지는 것을 확인할 수 있습니다.
my_vec <- c(1,2,3,4,5,6,7,8,9)
matrix(my_vec, nrow = 3)
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
my_vec <- c(1,2,3,4,5,6,7,8,9)
matrix(my_vec, nrow = 3, byrow = T)
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
3) 행렬 구조의 값을 사용하는 경우
아래와 같이 데이터가 이미 행렬 구조로 잡혀있는 경우, 아래와 같이 byrow = T
옵션을 적용해주면 됩니다. 아래 예시는 3 x 3
행렬을 생성하기 때문에 nrow = 3
, byrow = T
옵션을 설정해 주었습니다.
matrix(c(1,2,3,
4,5,6,
7,8,9), nrow = 3, byrow = T)
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
4. 관련 링크
[1] [R] 리스트 내 행렬들의 열합계(colSums) 구하기
[2] [R] 행렬 생성 및 부분 행렬 추출
[3] [R] 행렬곱 함수 직접 구현하기 (feat. For반복문)