인덱싱(indexing) = 색인이란 데이터의 일부분을 선택하는 작업을 말한다.
인덱싱(indexing) 은 [ ](대괄호)를 사용하여 데이터의 일부분을 선택할 수 있다.
각 자료구조마다 인덱싱(indexing)을 하는 방법이 다르다.
다른 언어와 달리 R은 인덱싱(indexing)이 '1'부터 시작한다는 것에 주의해야한다.
- Java, C, C++, Python은 인덱싱(indexing) '0'부터 시작
1. 벡터(vector)
- 벡터 인덱싱(indexing)은 다양한 방법으로 가능하다.
v1 <- c(1,2,3,4,5,6,7)
v1[2]
v1[c(3:5)]
v1[c(3, 5, 6)]
> v1[2]
[1] 2
> v1[c(3:5)]
[1] 3 4 5
> v1[c(3, 5, 6)]
[1] 3 5 6
2. 행렬(matrix)
- 행렬은 한가지 데이터 유형으로 구성된 2차원 구조의 데이터이기에 행과 열이 존재한다.
- 인덱싱(indexing)은 "행렬명[행,열]" 을 사용한다.
v1 <- c(1,2,3,4,5,6)
m1<-matrix(v1, nrow=2, ncol=3)
> m1[1,3] # m1행렬에서 1행2열의 구성요소
[1] 5
> m1[1,] # m1행렬에서 1행의 구성요소
[1] 1 3 5
> m1[,3] # m1행렬에서 3열의 구성요소
[1] 5 6
# m1
# [,1] [,2] [,3]
# [1,] 1 3 5
# [2,] 2 4 6
3. 배열(array)
- 배열은 한가지 데이터 유형으로 구성된 3차원 구조의 데이터이기에 행과 열,층이 존재한다.
- 인덱싱(indexing)은 "행렬명[행,열,층]" 을 사용한다.
v1 <- c(1,2,3,4,5,6)
a1 <- array(v1, dim = c(2,2,3))
> a1[1,2,3] # a1배열에서 3층에있는 1행2열의 구성요소
[1] 5
> a1[1,,] # a1배열에서 모든 층의 1행의 구성요소
[,1] [,2] [,3]
[1,] 1 5 3
[2,] 3 1 5
> a1[,1,] # a1배열에서 모든 층의 1열의 구성요소
[,1] [,2] [,3]
[1,] 1 5 3
[2,] 2 6 4
> a1[,,3] # a1배열에서 3층의 구성요소
[,1] [,2]
[1,] 3 5
[2,] 4 6
# a1
# , , 1
#
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
#
# , , 2
#
# [,1] [,2]
# [1,] 5 1
# [2,] 6 2
#
# , , 3
#
# [,1] [,2]
# [1,] 3 5
# [2,] 4 6
4. 리스트(list)
- 리스트는 key(층)별로 여러 데이터 유형이 포함된 1차원 구조의 데이터이기에 key(층)을 사용하여 인덱싱을 한다.
- 리스트 출력 시 겹대괄호[[]]를 key(층) 이라고 한다.
- 인덱싱(indexing)은 "겹대괄호[[key(층)]]" 을 사용한다.
list1 <- list('a',c('b','c'),1,2) #key(층)을 명명하지 않은 경우
> list1[[3]] #list1의 3층에 있는 요소 출력
[1] 1
> list1[[2]] #list1의 2층에 있는 요소 출력
[1] "b" "c"
> list1[[2]][1] #list1의 2층에 첫번째에 있는 요소 출력
[1] "b"
> list1[2] #list1의 2층에 있는 요소를 리스트형태로 출력
[[1]]
[1] "b" "c"
# list1
# [[1]]
# [1] "a"
#
# [[2]]
# [1] "b" "c"
#
# [[3]]
# [1] 1
#
# [[4]]
# [1] 2
list2 <- list(key1=c(1,2,3), key2=c('a','b','c','d')) #key(층)을 명시한 경우
> list2[['key2']] #list2의 'key2'에 있는 요소 출력
[1] "a" "b" "c" "d"
> list2[['key2']][3] #list2의 'key2'에 있는 세번째 요소 출력
[1] "c"
> list2['key2'] #list2의 'key2'에 있는 요소를 리스트형태로 출력
$key2
[1] "a" "b" "c" "d"
# list2
# $key1
# [1] 1 2 3
#
# $key2
# [1] "a" "b" "c" "d"
5. 데이터프레임(data frame)
- 데이터프레임은 컬럼별로 여러 데이터 유형으로 구성된 2차원 구조의 데이터이기에 행과 열이 존재한다.
- 인덱싱(indexing)은 " 데이터프레임명[행,열]" 을 사용한다.
- $를 사용할 수도 있다.
v1 <- c(1,2,3,4,5,6)
v2 <- c('a','b','c','d','e','f')
v3 <- c('A','B','C','D','E','F')
v4 <- c('가','나','다','라','마','바')
df1 <- data.frame(v1,v2,v3,v4)
> df1[1,] #df1에서 1행 출력
v1 v2 v3 v4
1 1 a A 가
> df1[,1] #df1에서 1열 출력
[1] 1 2 3 4 5 6
> df1[,'v1'] #df1에서 'v1'칼럼 출력
[1] 1 2 3 4 5 6
> df1[1] #df1에서 1열 출력
v1
1 1
2 2
3 3
4 4
5 5
6 6
> df1$v1 #df1에서 'v1'칼럼 출력
[1] 1 2 3 4 5 6
# df1
# v1 v2 v3 v4
# 1 1 a A 가
# 2 2 b B 나
# 3 3 c C 다
# 4 4 d D 라
# 5 5 e E 마
# 6 6 f F 바
'R > R' 카테고리의 다른 글
[R] 09. 조건문(ifelse/if문) (0) | 2023.12.05 |
---|---|
[R] 08. 문자열관련함수(stringr) (0) | 2023.11.29 |
[R] 04. 함수(function) (0) | 2023.11.22 |
[R] 03. 형 변환(casting) (0) | 2023.11.22 |
[R] 01. R의 자료구조 (0) | 2023.11.22 |