검색
검색
공개 노트 검색
회원가입로그인

[R 쉽게 설명하기] 배열 생성하기 (arry() 함수)

[R 쉽게 설명하기] 배열 생성하기 (arry() 함수) image 1

1. 배열 생성

안녕, 여러분! 오늘은 R에서 배열을 만드는 방법을 배워보려고 해요. 배열은 숫자나 글자를 담을 수 있는 상자라고 생각하면 돼요. 이 상자들을 규칙적으로 쌓아 올리면 배열이 완성되는 거예요.

1.1. array() 함수로 배열 만들기

# 1에서 18까지의 숫자를 담은 3행 3열의 배열을 2개 만들어볼까요?
arr <- array(1:24, c(3, 3, 2))
arr
, , 1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2
     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

와, 두 개의 3x3 배열이 만들어졌네요! 숫자들이 차곡차곡 들어가 있어요.

1.2. 배열의 차원에 이름 붙이기

# 배열의 차원마다 이름을 붙일 수도 있어요.
dimnames(arr) <- list(paste("row", c(1:3)), paste("col", c(1:3)), paste("ar", c(1:2))) 
arr
, , ar 1
     col 1 col 2 col 3
row 1     1     4     7
row 2     2     5     8
row 3     3     6     9

, , ar 2
     col 1 col 2 col 3
row 1    10    13    16
row 2    11    14    17
row 3    12    15    18

이제 배열의 행, 열, 그리고 각 배열마다 이름이 붙었죠? 이렇게 하면 나중에 배열의 특정 부분을 찾기 쉬워져요.

1.3. 배열의 정보 확인하기

length(arr)  # 배열의 전체 원소 개수
mode(arr)    # 배열에 담긴 값의 유형 
dim(arr)     # 배열의 차원(행, 열, 배열 수)
dimnames(arr) # 각 차원의 이름
> length(arr)
[1] 18
> mode(arr) 
[1] "numeric"
> dim(arr)
[1] 3 3 2
> dimnames(arr)
[[1]]
[1] "row 1" "row 2" "row 3"

[[2]]
[1] "col 1" "col 2" "col 3" 

[[3]]
[1] "ar 1" "ar 2"

배열에 대한 여러 가지 정보를 확인할 수 있어요. 전체 원소가 몇 개인지, 어떤 유형의 값이 들어있는지, 몇 차원 배열인지 등을 알 수 있죠.

1.4. 다양한 차원의 배열 만들기

# 1~6까지의 숫자로 1차원 배열 만들기
array(1:6)
[1] 1 2 3 4 5 6
# 1~6까지의 숫자로 2차원 배열 만들기
array(1:6, c(2,3))
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# 1~8까지의 숫자로 3차원 배열 만들기 
array(1:8, c(2,2,2))
, , 1
     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2
     [,1] [,2]
[1,]    5    7
[2,]    6    8

원하는 숫자들로 1차원, 2차원, 3차원 등 다양한 배열을 만들 수 있어요. array() 함수의 첫 번째 부분에는 배열에 넣을 값들을, 두 번째 부분에는 각 차원의 크기를 넣으면 돼요.

# 1~24까지의 숫자로 3행 4열짜리 배열 2개 만들기
arr <- c(1:24)  
dim(arr) <- c(3, 4, 2)
arr
, , 1
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

, , 2    
     [,1] [,2] [,3] [,4]
[1,]   13   16   19   22
[2,]   14   17   20   23
[3,]   15   18   21   24

dim() 함수를 사용하면 이미 만들어진 배열의 차원을 바꿀 수도 있답니다.

이렇게 해서 배열을 만드는 방법을 배웠어요. 처음에는 조금 어려울 수 있지만 차근차근 연습하다 보면 금방 익숙해질 거예요. 다음 시간에는 배열로 할 수 있는 여러 가지 연산을 배워보도록 하죠!

2. 배열의 연산

안녕하세요, 친구들! 저번 시간에는 배열을 만드는 방법을 배웠죠? 오늘은 배열로 할 수 있는 재미있는 연산들을 알아보려고 해요. 두 개의 배열을 더하거나 곱하는 것처럼 말이에요.

2.1. 배열 만들기

# 1~8까지의 숫자를 담은 2x2 배열 2개를 만들어볼까요?
arr1 <- array(1:8, dim = c(2, 2, 2))
arr2 <- array(8:1, dim = c(2, 2, 2))
arr1
arr2
> arr1
, , 1
     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2
     [,1] [,2]
[1,]    5    7
[2,]    6    8

> arr2 
, , 1
     [,1] [,2]
[1,]    8    6
[2,]    7    5

, , 2    
     [,1] [,2]
[1,]    4    2
[2,]    3    1

arr1과 arr2, 두 개의 배열이 만들어졌어요. arr1은 숫자가 1부터 8까지 순서대로 들어가 있고, arr2는 8부터 1까지 거꾸로 들어가 있네요.

2.2. 배열의 덧셈

# 배열끼리 덧셈을 해볼까요?
arr1 + arr2
, , 1
     [,1] [,2]
[1,]    9    9
[2,]    9    9

, , 2
     [,1] [,2]
[1,]    9    9
[2,]    9    9

arr1과 arr2를 더하니 모든 원소가 9가 되었어요. 왜냐하면 배열의 덧셈은 같은 위치에 있는 원소끼리 더하기 때문이에요. 1+8=9, 2+7=9, 3+6=9, 이런 식으로요.

2.3. 배열의 곱셈

# 배열끼리 곱셈도 해볼까요? 
arr1 * arr2
, , 1
     [,1] [,2]
[1,]    8   18
[2,]   14   20

, , 2    
     [,1] [,2]
[1,]   20   14
[2,]   18    8

배열의 곱셈도 같은 위치에 있는 원소끼리 곱해요. 1x8=8, 2x7=14, 3x6=18, 이런 식으로 계산되는 거죠.

2.4. 배열 원소들의 곱의 합

# 두 배열 원소들의 곱을 모두 더해볼까요?
arr1 %*% arr2
     [,1]
[1,]  120

%*% 기호를 사용하면 배열의 원소들끼리 곱한 값을 모두 더할 수 있어요. 여기서는 (1x8)+(3x6)+(2x7)+(4x5)+...+(6x3)+(8x1) = 120이 되는 거예요.

2.5. 배열 원소의 추출과 삭제

# 배열의 일부분만 뽑아낼 수도 있어요.
arr1[,,1]  # 첫 번째 배열만 추출
     [,1] [,2]
[1,]    1    3
[2,]    2    4
arr1[1,1,]  # 모든 배열의 1행 1열 추출 
[1] 1 5
arr1[1,,-2]  # 두 번째 배열을 제외한 1행 추출
[1] 1 3

배열의 특정 부분만 뽑아내거나 삭제할 수 있어요. 대괄호 안에 원하는 위치를 쉼표로 구분해서 써주면 돼요. 빈 자리는 그 차원 전체를 의미해요.

자, 이제 배열로 할 수 있는 다양한 연산을 배웠네요. 배열끼리 더하고 곱하고, 원하는 부분만 추출하는 것까지. 배열은 데이터를 다루는 데 정말 유용해요. 게임 속 아이템 목록이나 성적 관리 같은 것들도 배열로 만들 수 있겠죠?

여러분도 직접 배열을 만들고 연산해보면서 감을 익혀보세요. 어떤 걸 만들어볼까요? 상상력을 발휘해서 정말 멋진 배열 작품을 만들어보시길 바래요.

조회수 : 32
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기