R 배열(array)정의, 이름 지정
배열은 행렬과 벡터를 포함하는 개념입니다. 벡터는 1차원 배열이고, 행렬은 2차원 배열입니다. 배열은 n차원까지 정의가 가능합니다.
배열은 array 함수를 이용하여 정의합니다. 행렬에서는 nrow 또는 ncol을 이용하여 행 또는열의 수를 지정했습니다. 배열에서는 각 차원에 나열될 줄 수를 정의해야합니다.
1. array 함수로 벡터 정의
먼저 배열을 이용하여 벡터를 정의하는 것으로 시작합시다. 원소가 4개인 벡터를 정의하겠습니다.
> v1=array(c(1,2,3),dim=c(3))
> v1
[1] 1 2 3
dim=c(3)은 1차원이고 줄 수가 3개라는 말입니다. 괄호 안에 있는 수의 개수가 차원이고, 수의 값이 줄 수 입니다. 방금 정의된 벡터는 열벡터일까요 행벡터일까요 아니면 일반벡터일까요? 여기서 일반벡터는 R에서 c()를 이용하여 정의하는 벡터를 의비합니다. 일반벡터는 상황에 따라 행벡터로 행동하기도 하고 열벡터로 행동하기도 합니다. 일반벡터에 대한 설명은 (https://rbasall.tistory.com/14) 를 참고하시면 됩니다.
class를 확인해보면 array인데, 일반벡터처럼 행동합니다.
> class(v1)
[1] "array"
array 함수를 이용하여 행벡터를 정의하고 싶다면 아래와 같이 정의하면 됩니다.
> v2=array(c(1,2,3),dim=c(1,3))
> v2
[,1] [,2] [,3]
[1,] 1 2 3
2. array 함수로 행렬 정의
이번에는 array 함수로 행렬을 정의해봅시다. array 함수의 작동원리를 이해하기 위해 벡터와 행렬을 정의해보는 것입니다.
먼저 matrix로 행렬을 정의합시다.
> m1=matrix(c(1,2,3,4,5,6),nrow=2)
> m1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
위 행렬을 array 함수로 정의해보겠습니다.
> a1=array(c(1,2,3,4,5,6),dim=c(2,3))
> a1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
dim(2,3)의 의미는 dim(행2개,열3개) 라는 의미입니다. class를 보니 matrix입니다. array함수로 행렬을 정의하면 class가 배열이 아닌 행렬로 지정되나봅니다.
> class(a1)
[1] "matrix"
3. array 함수로 3차원 배열 정의
차원을 하나 늘려봅시다. 행렬을 높이방향으로 쌓아놓은 것이라고 생각하면 됩니다.
2행 3열의 행렬을 4층 쌓은 배열을 정의합시다.
> a2=array(1:24,dim=c(2,3,4))
> a2
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
4. n차원 배열 정의
원리만 말씀드리겠습니다. 아래와 같은 형식으로 입력합니다.
array(벡터, dim=c(a1,a2,a3,...,an))
한가지 조건만 만족되면 배열이 정의됩니다.
벡터의 원소 수와, a1부터 an 까지의 곱이 같으면 됩니다.
5. 배열의 차원별 이름 정의
dinames 함수를 사용합니다. 리스트 형태로 입력합니다. 위에서 정의한 배열을 가져옵시다.
> a2=array(1:24,dim=c(2,3,4))
> a2
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
차원별 이름을 입력하겠습니다.
> dimnames(a2)=list(c("x1","x2"),c("y1","y2","y3"),c("z1","z2","z3","z4"))
> a2
, , z1
y1 y2 y3
x1 1 3 5
x2 2 4 6
, , z2
y1 y2 y3
x1 7 9 11
x2 8 10 12
, , z3
y1 y2 y3
x1 13 15 17
x2 14 16 18
, , z4
y1 y2 y3
x1 19 21 23
x2 20 22 24
6. 자료구조 확인
자료 구조를 확인하는 함수는 class, typeof, mode가 있습니다. 배열인지 여부를 확인하는 함수는 as.array입니다.
> a=array(1:24,dim=c(2,3,4))
> class(a)
[1] "array"
> mode(a)
[1] "numeric"
> str(a)
int [1:2, 1:3, 1:4] 1 2 3 4 5 6 7 8 9 10 ...
> typeof(a)
[1] "integer"
> is.array(a)
[1] TRUE
'5. 자료구조 > 3) 배열 | array()' 카테고리의 다른 글
[R코딩] array 함수 없이 벡터로 배열 만드는 방법 (0) | 2020.12.15 |
---|---|
[R 코딩] 배열,행렬 생성 시 사용 가능한 반복규칙 (0) | 2020.12.15 |
댓글