더북(TheBook)

예를 들어, iris 데이터에서 Species가 setosa인 행은 subset( )으로 다음과 같이 찾을 수 있다.

> subset(iris, Species == "setosa")
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
...

또는 데이터 프레임을 접근할 때 색인에 진릿값이 지정되도록 조건을 적을 수 있다.

> iris[iris$Species == "setosa", ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
...

이 두 가지 방법은 모두 조건을 만족하는 행을 반환하는 역할을 한다. 반면 which( )는 조건을 만족하는 행의 색인을 반환한다.

> which(iris$Species == "setosa")
 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
[31] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

which.min( )과 which.max( )는 주어진 벡터에서 최솟값 또는 최댓값이 저장된 색인을 찾는다. iris에서 Sepal.Length의 최솟값, 최댓값이 속한 행의 색인을 찾아보자.

> which.min(iris$Sepal.Length)
[1] 14
> which.max(iris$Sepal.Length)
[1] 132

which.min( )과 which.max( ) 함수는 다양한 파라미터에 따라 모델을 만들고 모델을 선택하는 데 사용할 수 있다. 예를 들어, 기계 학습 모델을 만들고, 모델의 가능도likelihood를 벡터에 저장해뒀다면 which.max( ) 함수를 사용해 가능도가 가장 큰 모델을 찾을 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.