열렬히.뛰기

배열

Language > 프로그래밍 언어 > R > R언어 : 자료구조 > 배열

배열 만들기

벡터 = 1차원, 행렬 = 2차원, 배열 = n차원

array(data, dim=c(x, y, z), dimnames=list(x=c(), y=c(), z=c()) )

  • dim=c(x,y,z,...) ⇒ 행의 갯수, 열의 갯수, 면의 갯수, \cdots
  • dimnames()
    • 행의 이름 ⇒
    • 열의 이름 ⇒
r
array(seq(2, 32, 2), dim=c(2,2,2,2))
r
, , 1, 1

     [,1] [,2]
[1,]    2    6
[2,]    4    8

, , 2, 1

     [,1] [,2]
[1,]   10   14
[2,]   12   16

, , 1, 2

     [,1] [,2]
[1,]   18   22
[2,]   20   24

, , 2, 2

     [,1] [,2]
[1,]   26   30
[2,]   28   32

예시: 속성명 붙이기

r
arr = array(c(1:12), dim=c(3,2,2),
						dimnames=list(x=c(1,2,3),y=c(1,2),z=c(1,2)))
r
, , z = 1

   y
x   1 2
  1 1 4
  2 2 5
  3 3 6

, , z = 2

   y
x   1  2
  1 7 10
  2 8 11
  3 9 12

차원 확인

  • dim() 이용하기.
r
dim(arr)

배열 간 연산

  • 같은 크기의 배열 간 사칙연산 가능

원소끼리의 연산

  • 사칙연산 : +, -, /, *
  • 나머지 : %%
  • 제곱 : ^

배열끼리의 연산

  • %*% : 원소끼리 곱한 것의 합으로 생각. 내적과 비슷하다.
r
arr.x = array(, c(2,2,2))
arr.y = array(, c(2,2,2))
arr.x %*/% arr.y
sum(arr.x*arr.y)

배열의 인덱싱

  • 행렬과 기본적으로 같다.
  • Arr[a, b, c] : 각 차원을 a, b, c번째 인덱스로 사용
  • 앞에 -가 붙으면 해당 차원을 제외.