R 배열

이 글에서는 R의 자료 객체(data objects) 중 배열에 대해 다뤄보고자 한다.

배열

  • 배열은 동일한 유형의 데이터로 구성된 2차원 이상의 데이터이다. R에서 행렬은 2차원 객체로 정의되는 데 비해, 배열은 그 이상의 차원을 가질 수 있다.
    • 예컨대 2 * 2 * 2 배열의 경우, 2 * 2 매트릭스가 두 개 존재한다고 생각하면 된다.
  • 배열의 차원은 dim() 함수로 확인 가능
  • 배열의 차원과 벡터의 길이가 맞지 않으면 오류가 출력된다. 이를테면 아래의 코드 확인.
z <- 1 : 1500
dim(z) <- c(3, 5, 100)
aa <- 1 : 24
dim(aa) < c(3, 4, 2)
## logical(0)
aa
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## [24] 24
dim(aa)
## NULL
bb <- 1 : 22
# dim(bb) <- c(3, 4, 2) 에러 출력 
cc <- 1 : 26
# dim(cc) <- c(3, 4, 2) 에러 출력 
  • 배열 생성 방법: array(data = NA, dim = c(), dimnames = NULL)
    • dimnames는 배열의 행, 열 따위에 이름을 부여한다.
a <- array(data = 1 : 24, dim = c(3, 4, 2), 
      dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4"), c("o1", "o2")))
a # 배열 a 출력 
## , , o1
## 
##    c1 c2 c3 c4
## r1  1  4  7 10
## r2  2  5  8 11
## r3  3  6  9 12
## 
## , , o2
## 
##    c1 c2 c3 c4
## r1 13 16 19 22
## r2 14 17 20 23
## r3 15 18 21 24
b <- array(data = 1 : 22, dim = c(3, 4, 2)) # 앞의 예와는 다르게, array 명령어를 사용하면 차원(dim)과 데이터 길이가 맞지 않아도 에러가 없음 
b # 배열 b 출력 
## , , 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    1
## [3,]   15   18   21    2