본문 바로가기

R

R MANUALS : ② 숫자와 벡터 → 2.6 벡터 인덱싱(추출하기) .1

SMALL

본 글은 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"

 

LIST