[R] 행렬 생성 및 부분 행렬 추출

matrix-manipulation-in-r

해당 포스트는 R에서 행렬 생성 방법과 부분 행렬을 추출 방법을 설명합니다.

1. INTRO

R에서 행렬(matrix)은 빈번하게 사용되지는 않지만 반드시 알고 있어야 하는 자료 구조입니다. 네이버 지식인에서 행렬 생성 및 부분 행렬 추출 방법에 대해 질문을 받아 간단한 사용 예제를 정리하였으니 참고하시면 좋을 것 같습니다.

2. 질문


R프로그래밍 부분행렬 질문이요! 1부터 50까지의 정수로 5개의 열을 갖는 행렬을 생성하고, 마지막 두 개 행과 마지막 세 개 열로 구성된 부분행렬을 만드시오. 문제가 이건데 답이뭔가요? 작동원리도 설명해주시면 감사하겠습니다!


matrix-manipulation-in-r
▲ 네이버 지식인 질문

3. 풀이

1. 행렬 생성

R에서 행렬을 생성해주는 함수는 matrix()입니다. 문제에서 제시된 1부터 50까지의 수를 5열의 행열로 만드는 코드는 아래와 같습니다.

my_data <- matrix(1:50, ncol=5)
my_data
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1   11   21   31   41
 [2,]    2   12   22   32   42
 [3,]    3   13   23   33   43
 [4,]    4   14   24   34   44
 [5,]    5   15   25   35   45
 [6,]    6   16   26   36   46
 [7,]    7   17   27   37   47
 [8,]    8   18   28   38   48
 [9,]    9   19   29   39   49
[10,]   10   20   30   40   50

2. 부분 행렬 추출

문제에 따르면 생성된 행렬에서 마지막 2개 행과 마지막 3개 열을 추출해야 합니다. 마지막이라는 조건을 반영하려면 행렬의 크기를 알아야 하는데 저는 행의 길이를 찾아주는 nrow()와 열의 길이를 찾아주는 ncol()함수를 이용하였습니다. 아래 사용된 코드를 부분적으로 살펴보면 아래와 같습니다.


  • nrow(my_data) : 행렬의 행의 크기
  • ncol(my_data) : 행렬의 열의 크기
  • nrow(my_data)-1 : 마지막에서 2번째 행의 인덱스
  • ncol(my_data)-2 : 마지막에서 3번째 열의 인덱스

my_data[(nrow(my_data)-1):nrow(my_data), (ncol(my_data)-2):ncol(my_data)]
     [,1] [,2] [,3]
[1,]   29   39   49
[2,]   30   40   50

4. 마무리

이번 포스트에서는 R에서 행렬 생성 방법과 부분 행렬을 추출 방법을 설명하였습니다. 행렬은 일반 프로그래밍에서 많이 사용되지는 않지만, 수학적 연산이 필요한 분석(딥러닝/머신러닝 등)에서는 사용될 수 있기에 대략적인 개념과 사용법은 알고 계시는 것이 좋습니다.

5. 관련 링크

[1] 네이버 지식인


banner-request-analysis