R언어의 기본이 되는 object의 종류는 다음과 같다..
- vector
- matrix
- array
- factor
- list
- data frame
- function
본 글에서는 array의 사용에 대해 설명한다.
- array의 기본
- array에의 접근
- array의 계산
1. array의 기본
R언어에서 array는 일반적으로 알려져 있는 것과 같이 같은 mode(type)의 데이터가 연속적으로 나열되어 있는 구조를 의미한다.
1차원, 2차원, 3차원 및 고차원으로 선언이 가능하다.
array는 다음과 같이 선언한다.
a <- array(data_vector, dim_vector)
data_vector 는 실제 array에 포함될 데이터 값을 vector 형태로 표현한 것이고,
dim_vector는 해당 data_vector가 표현될 차원에 대한 정보이다.
1차원 array의 예)
> a1 <- array(1:12,dim=c(12)) > a1 [1] 1 2 3 4 5 6 7 8 9 10 11 12
2차원 array의 예)
> a2 <- array(1:12,dim=c(3,4)) > a2 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12
3차원 array의 예)
> a3 <- array(1:12,dim=c(2,2,3)) > a3 , , 1 [,1] [,2] [1,] 1 3 [2,] 2 4 , , 2 [,1] [,2] [1,] 5 7 [2,] 6 8 , , 3 [,1] [,2] [1,] 9 11 [2,] 10 12
2. array에의 접근
vector나 matrix 일 때와 마찬가지로 접근이 가능하다.
'[', ']'를 이용해서 각 element에 바로 접근가능하고, 특정 row나 column에 일괄적 접근도 가능하다.
1차원 array 로의 접근 예)
> a1[3] [1] 3
2차원 array 로의 접근 예)
> a2[2,1] [1] 2
> a2[,1] [1] 1 2 3
> a2[2,] [1] 2 5 8 11
3차원 array 로의 접근 예)
> a3[1,1,2] [1] 5
> a3[,2,] [,1] [,2] [,3] [1,] 3 7 11 [2,] 4 8 12
> a3[1,1,] [1] 1 5 9
3. array의 계산
만약 같은 dimension의 array 끼리 계산 한다면 별다른 문제가 없을 것이다.
같은 dimension의 array 계산의 예)
> a <- array(1:8,dim=c(2,2,2)) > b <- array(seq(from=2,to=16,by=2),dim=c(2,2,2)) > > a , , 1 [,1] [,2] [1,] 1 3 [2,] 2 4 , , 2 [,1] [,2] [1,] 5 7 [2,] 6 8 > b , , 1 [,1] [,2] [1,] 2 6 [2,] 4 8 , , 2 [,1] [,2] [1,] 10 14 [2,] 12 16 > > a+b , , 1 [,1] [,2] [1,] 3 9 [2,] 6 12 , , 2 [,1] [,2] [1,] 15 21 [2,] 18 24
- 먼저 다른 dimension을 가진 array 끼리는 연산이 되지 않는다.
> b = array(6:12,dim=c(2,3)) > c = array(6:13,dim=c(2,4)) > b+c Error in b + c : non-conformable arrays
다만 하나의 예외가 있다.
- vector와 array 와는 연산이 가능하다.
단, vector의 크기는 array 보다 작아야 한다. (recycling rule 적용)
> a = 1:3 > b = array(6:12,dim=c(2,3)) > a+b [,1] [,2] [,3] [1,] 7 11 12 [2,] 9 10 14
먼저 vector는 연산하려는 array와 dimension을 맞춘 뒤 부족한 element 들은 자신이 가지고 있던 값들을 반복해서 채워 넣는다.
즉, 위의 예에서 a는 아래와 같이 인식되어 계산된다. (recycling은 column을 기준으로 진행된다.)
[,1] [,2] [,3] [1,] 1 3 2 [2,] 2 1 3
하지만 만약 연산하려는 vector가 array의 element의 수보다 클 경우는 다음과 같은 에러가 발생하고 연산이 되지 않는다.
> a = 1:20 > b = array(6:12,dim=c(2,3)) > a+b Error: dims [product 6] do not match the length of object [20] In addition: Warning message: In a + b : longer object length is not a multiple of shorter object length
'Language > R' 카테고리의 다른 글
[02-2] R언어 - 연산 (Arithmetic) (0) | 2017.12.06 |
---|---|
[01-3] R언어 - 학습의 구성 (0) | 2017.12.05 |
[02-1] R언어 - Assignment (할당) (0) | 2017.11.10 |
[03-1] R언어 - Object의 정의 및 종류 (0) | 2017.11.10 |
[03-8] R언어 - Data frame 의 상세 (0) | 2017.11.09 |
[03-4] R언어 - matrix 의 상세 (0) | 2017.11.08 |
[03-3] R언어 - vector 의 상세 (0) | 2017.11.08 |
[03-2] R언어 - type와 mode 차이의 이해 (0) | 2017.11.07 |