본 글은 https://cran.r-project.org/doc/manuals/r-release/R-intro.html내용을 기반으로 작성되었습니다.
Copyright © 1999–2021 R Core Team
- 벡터 내 하나하나의 요소들은 대괄호([ ])를 활용하여 추출할 수 있음
- index(인덱스)라고도 불리는 방법으로 요소를 추출할수도 수정할 수도 있는 방법임
- 여기에는 크게 4가지 주요 추가적인 방법이 있음
[논리형 벡터로 인덱싱하기]
- '어떤 벡터'를 논리형 벡터로 인덱싱하기 위해서는 '어떤 벡터'와 같은 길이의 논리형벡터를 활용하면 됨
- 예를들어 (1,2,3) 세개의 숫자가 들어있는 벡터에서 논리형 벡터로 인덱싱을하려면 (TRUE, FALSE, TRUE) 와 같이 세개의 논리값이 들어있는 벡터를 활용하면 됨
- (1,2,3)이라는 벡터에 대괄호 [ ]를 활용하여 (TRUE, FALSE, TRUE)를 입력하면 TRUE의 위치에 해당하는 값이 추출됨
> x <- c(1,2,3)
> x
[1] 1 2 3
> y <- c(TRUE, FALSE, TRUE)
> y
[1] TRUE FALSE TRUE
> x[y]
[1] 1 3
- 대괄호 [ ] 안에 논리값을 만들어낼 수 있는 함수를 직접 입력해도 됨
- 예를 들어 NA값이 아닌 요소만 추출하고 싶으면, 대괄호 [ ] 안에 !is.na() 함수를 쓰면 됨
- !is.na()에서 ! 기호는 is.na()를 반대의 의미로 바꾸라는 의미임
- is.na()가 NA값에 대해 TRUE를 반환하는데, !is.na()는 NA값이 아닌 것에 대해 TRUE를 반환하게 됨
- !is.na() 함수를 통해 NA가 아닌 값에 TRUE가 만들어지는 벡터가 생성되고 이를 통해 인덱싱을 하는 것임
> x <- c(1,2,NA,4)
> x
[1] 1 2 NA 4
> y <- !is.na(x)
> y
[1] TRUE TRUE FALSE TRUE
> x[y]
[1] 1 2 4
> x[!is.na(x)]
[1] 1 2 4
- 대괄호 [ ] 안에서 &(그리고)와 |(또는)을 활용하여 여러가지 조건을 걸 수도 있음
- 예를 들어 !is.na(x) 와 함께 x>2 (2 이상)의 값만 추출하라고 두가지 조건을 동시에 걸 수 있음
> x <- c(1,2,NA,4)
> x
[1] 1 2 NA 4
> x[!is.na(x) & x>2]
[1] 4
[숫자형 벡터로 인덱싱하기]
- 대괄호[] 안에 몇번째의 요소를 추출하라는 벡터를 입력하면 됨
- x[1]이라고 입력하면 x라는 벡터의 첫번째 값을 추출함
- x[2]라고 입력하면 x라는 벡터의 두번째 값을 추출함
- x [c(1,2,3)]라고 입력하면 x라는 벡터의 첫번째, 두번째, 세번째 값을 추출함
> x <- c(2,5,4,8,1,6,5)
> x
[1] 2 5 4 8 1 6 5
> x[1]
[1] 2 # 출력값에서 앞 대괄호는 몇번째 줄인지 나타내는 기호로 신경 쓸 필요 없음
> x[2]
[1] 5
> x[c(1,2,3)] # 여러개의 위치값을 입력할 때는 c()함수로 묶어주어 벡터화 시켜야 함
[1] 2 5 4
- 반복적으로 똑같은 요소를 추출해낼 수 있음
- 예를들어 ("a", "b") 두개의 요소가 있는 벡터에서 [c(1,2,1,1,1,1,1)]을 입력하면 a 한번, b 한번, a 다섯번이 추출됨
- 대괄호 [ ] 안에 rep() 과 같은 함수를 사용하는 것도 가능함
> x <- c("a", "b")
> x
[1] "a" "b"
> x[c(1,2,1,1,1,1,1)]
[1] "a" "b" "a" "a" "a" "a" "a"
> x[rep(c(1,2,2), times=4)]
[1] "a" "b" "b" "a" "b" "b" "a" "b" "b" "a" "b" "b"
'R' 카테고리의 다른 글
R MANUALS : ② 숫자와 벡터 → 2.6 문자형 벡터 (0) | 2021.12.28 |
---|---|
R MANUALS : ② 숫자와 벡터 → 2.5 결측치 (0) | 2021.12.25 |
R MANUALS : ② 숫자와 벡터 → 2.4 논리형 벡터 (0) | 2021.12.21 |
R MANUALS : ② 숫자와 벡터 → 2.3 연속 숫자 생성하기 (0) | 2021.12.18 |
R MANUALS : ② 숫자와 벡터 → 2.2 벡터의 연산 .2 (0) | 2021.12.17 |