3.4 R 배열 Array
배열은 동일한 형태의 데이터가 2차원 이상으로 구성된 데이터 구조입니다. 벡터가 1차원이고, 행렬은 2차원, 배열은 2차원 이상의 구조입니다. 배열은 행렬을 층층히 쌓으면서 3차원, 4차원, 5차원 등으로 확대할 수 있습니다.
3.4.1 배열 생성
3.4.2 배열 이름 붙이기
# array()의 dimnames 속성을 이용하여 이름 붙이기
arr2 <- array(
data = 1:24,
dim = c(4, 3, 2),
dimnames = list(c("one", "two", "three", "four"),
c("ray", "karl", "mimo"),
c("steve", "mark")
)
)
arr2
#> , , steve
#>
#> ray karl mimo
#> one 1 5 9
#> two 2 6 10
#> three 3 7 11
#> four 4 8 12
#>
#> , , mark
#>
#> ray karl mimo
#> one 13 17 21
#> two 14 18 22
#> three 15 19 23
#> four 16 20 24
3.4.3 배열의 요소 추출
3.4.3.1 특정위치에 있는 요소 추출
3.4.3.2 이름으로 요소 추출
# 2행(two), 2열(karl), 2층(mark) 요소 추출
arr2["two", "karl", "mark"]
#> [1] 18
# 각 층의 2행(two) 추출
arr2["two", , ]
#> steve mark
#> ray 2 14
#> karl 6 18
#> mimo 10 22
# 각층의 3행(three), 3열(mimo) 요소 추출
arr2["three", "mimo", ]
#> steve mark
#> 11 23
# 2층(mark)의 행렬 추출
arr2[,,"mark"]
#> ray karl mimo
#> one 13 17 21
#> two 14 18 22
#> three 15 19 23
#> four 16 20 24
3.4.3.3 마이너스 기호(-)를 이용하여 요소 제외
3.4.4 배열 요소 수정
3.4.5 배열 연산
arr2 * 3
#> , , steve
#>
#> ray karl mimo
#> one 3 15 27
#> two 6 165 30
#> three 9 21 33
#> four 12 24 36
#>
#> , , mark
#>
#> ray karl mimo
#> one 39 51 63
#> two 42 54 66
#> three 45 57 69
#> four 48 60 72
rowSums(arr2)
#> one two three four
#> 66 121 78 84
colSums(arr2)
#> steve mark
#> ray 10 58
#> karl 75 74
#> mimo 42 90
배열의 차원이 같다면 배열끼리 계산이 가능합니다.
ax <- array(1:12, dim = c(2, 3, 2))
ay <- array(11:22, dim = c(2, 3, 2))
ax; ay
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 1 3 5
#> [2,] 2 4 6
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 7 9 11
#> [2,] 8 10 12
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 11 13 15
#> [2,] 12 14 16
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 17 19 21
#> [2,] 18 20 22
ax + ay
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 12 16 20
#> [2,] 14 18 22
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 24 28 32
#> [2,] 26 30 34
ax * ay
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 11 39 75
#> [2,] 24 56 96
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 119 171 231
#> [2,] 144 200 264
ax / ay
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 0.0909 0.231 0.333
#> [2,] 0.1667 0.286 0.375
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 0.412 0.474 0.524
#> [2,] 0.444 0.500 0.545
ax + (1:2)
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 2 4 6
#> [2,] 4 6 8
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 8 10 12
#> [2,] 10 12 14