반응형
배열(array)은 동일한 자료형의 데이터를 저장하는 다차원의 자료구조이다.
벡터(vector)은 1차원의 배열구조, 행렬(matrix)도 2차원의 배열구조라고 할 수 있다.
◎ 배열 생성
- array()
array(data = NA, dim = length(data), dimnames = NULL) |
<인수설명>
dim | 배열의 차원, 값을 지정하지 않으면 1차원의 배열을 생성 |
dimnames | 각 차원의 이름을 지정 |
> arr1 = array(1:12, c(2,3,2), dimnames=list(c('a','b'),c('c','d','e'),c('f','g')))
> print(arr1)
, , f
c d e
a 1 3 5
b 2 4 6
, , g
c d e
a 7 9 11
b 8 10 12
> cat(arr1)
1 2 3 4 5 6 7 8 9 10 11 12
cat() 함수로 배열과 행렬을 출력하면 벡터처럼 출력된다.
> mat1 = rbind(c(1,2,3), c(4,5,6)); mat1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> mat2 = rbind(c(10,100,1000), c(0,0,0)); mat2
[,1] [,2] [,3]
[1,] 10 100 1000
[2,] 0 0 0
> arr2 = array(c(mat1,mat2), c(3,2,2))
> arr2
, , 1
[,1] [,2]
[1,] 1 5
[2,] 4 3
[3,] 2 6
, , 2
[,1] [,2]
[1,] 10 0
[2,] 0 1000
[3,] 100 0
> c(mat1,mat2)
[1] 1 4 2 5 3 6 10 0 100 0 1000 0
mat1과 mat2가 행렬이여도 c()함수는 벡터를 생성하는 함수임으로 c()로 묶으면 벡터로 출력된다.
mat1과 mat2을 하나의 배열로 만들고 싶다면 밑의 방법을 쓸 수도 있다.
> arr3 = array(0, c(2,3,2))
> arr3[,,1] = mat1
> arr3[,,2] = mat2
> arr3
, , 1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
, , 2
[,1] [,2] [,3]
[1,] 10 100 1000
[2,] 0 0 0
먼저 빈 배열을 만들어주는데 이때 차원은 알맞게 지정해주지않으면 오류가 발생한다.
[ , ,1] 같은 인덱싱 방법은 조금 더 밑에서 설명하겠다.
> arr4 = array(1:8, c(2,3,2))
> arr4
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 1 3
[2,] 8 2 4
> arr5 = array(1:12, c(2,2,2))
> arr5
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
차원의 크기와 벡터의 수가 같지 않으면 벡터를 부족한만큼 반복해서 값을 가져다 쓰거나 벡터가 넘치면 차원에 맞춰 값을 자른다.
- dim()
> arr6 = 1:10
> dim(arr6) = c(1,5,2)
> arr6
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 6 7 8 9 10
◎ 배열 인덱싱(indexing)
- 객체[행, 열, 면]
> arr = array(1:12, c(2,2,3)); arr
, , 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
> dim(arr)
[1] 2 2 3
> arr[1,1,1]
[1] 1
> arr[1,2,1:3]
[1] 3 7 11
> arr[,,1]
[,1] [,2]
[1,] 1 3
[2,] 2 4
- 조건식
> arr[arr %% 2 == 0]
[1] 2 4 6 8 10 12
> arr[arr >= 10]
[1] 10 11 12
조건식의 결과는 벡터로 출력된다.
- 값 치환
> arr[,,1] = 0
> arr[arr >= 10] = -1
> arr
, , 1
[,1] [,2]
[1,] 0 0
[2,] 0 0
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 -1
[2,] -1 -1
<R 배열 Array - 생성/인덱싱>
반응형
'R > Data Type' 카테고리의 다른 글
R 데이터프레임 DataFrame - 인덱싱/관련함수 (0) | 2020.10.26 |
---|---|
R 데이터프레임 DataFrame - 생성과 저장 text/csv/excel파일 (0) | 2020.10.19 |
R 행렬 Matrix - 생성/연산/인덱싱 (0) | 2020.10.14 |
R 리스트 List - 생성/관련함수/인덱싱 (0) | 2020.08.11 |
R 벡터 Vector - 생성/연산/인덱싱 (0) | 2020.07.28 |
댓글