예를 들어, 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( ) 함수를 사용해 가능도가 가장 큰 모델을 찾을 수 있다.