[R] FOR문을 이용해 모든 행렬 원소에 곱셈 적용하기

해당 포스트는 네이버지식인을 통해 질문 받은 'R에서 FOR문을 이용해 행렬에 특정 수를 곱하는 방법'에 대한 답변을 공유하는 글입니다.

multiply-all-matrix-elements-by-2-in-r

질문

행렬에 2를 곱하는 프로그램 짜는 법 좀 알려주세요ㅠㅜ

multiply-all-matrix-elements-by-2-in-r
[출처] 네이버 지식인

풀이

1. 행렬 생성

먼저, R 코드 설명에 사용할 샘플 데이터(행렬 데이터)를 생성합니다.

# 원하는 행의 수, 열의 수 입력
mat_i <- 3
mat_j <- 3

# 1부터 9까지의 값을 가지는 3x3 행렬 생성
my_mat <- matrix(1:9, nrow = mat_i, ncol = mat_j)

# 생성된 행렬 출력
my_mat
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

2. 각 요소에 특정 수를 곱하는 반복문 코드 작성

for문을 이용하여 각 요소에 특정 수를 곱하기 위해서는 행렬의 모든 원소를 탐색되도록 이중 반복문을 사용하면 됩니다. 아래에서는 모든 원소에 2를 곱하는 코드를 예시로 설명합니다.

아래 코드에서는 이전에 입력받은 행의 수 mat_i와 열의 수 mat_j를 이용하여 반복문의 범위를 입력하고, 모든 원소를 탐색하며 기존 원소에 2를 곱하는 연산을 수행합니다.

# 각 요소에 2를 곱하는 반복문 실행
for (i in 1:mat_i) {
  for (j in 1:mat_j) {
    my_mat[i, j] <- my_mat[i, j] * 2
  }
}

# 업데이트된 행렬 출력
my_mat
     [,1] [,2] [,3]
[1,]    2    8   14
[2,]    4   10   16
[3,]    6   12   18


출력 결과에서 모든 원소에 2를 곱한 값이 정상 출력된 것을 볼 수 있습니다. 위 코드를 이용한다면, 행과 열의 수가 달라지더라도 동일한 곱셈 연산을 수행할 수 있습니다.

마무리

이번 포스트에서는 R에서 1부터 9까지의 값을 가진 3x3 행렬을 생성하고, 중첩된 for 루프를 사용하여 모든 요소를 2로 곱하는 방법을 설명하였습니다. 설명에 사용한 코드는 R에서 for문을 사용하여 행렬의 요소별 연산을 수행하는 다양한 연관 문제들을 해결하는데도 활용 가능하기에, 사용 변수 및 구조에 대해 자세히 익히신다면 변칙 문제 해결에 큰 어려움 없으실 거라 생각합니다.


관련 링크

[1] 네이버 지식인