‘3.3.2 벡터 연산’ 절에서 살펴봤듯이 벡터 간 연산에서의 AND, OR는 &&, ||가 아니라 &, |를 사용해야 한다. 따라서 subset( )에서 2개 이상의 조건을 조합할 때는 &나 |를 사용한다. 다음은 setosa 종에서 Sepal.Length가 5.0 이상인 행을 추출하는 예다.
> subset(iris, Species == "setosa" & Sepal.Length > 5.0)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
...
subset에 select 인자를 지정하면 특정 컬럼을 선택하거나 제외할 수 있다. 다음은 Sepal.Length와 Species 컬럼을 iris에서 선택하여 출력한 예다.
> subset(iris, select=c(Sepal.Length, Species))
Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
4 4.6 setosa
5 5.0 setosa
...
반대로 특정 컬럼을 제외하고자 한다면 –를 컬럼 이름 앞에 붙인다.
> subset(iris, select=-c(Sepal.Length, Species))
Sepal.Width Petal.Length Petal.Width
1 3.5 1.4 0.2
2 3.0 1.4 0.2
3 3.2 1.3 0.2
4 3.1 1.5 0.2
5 3.6 1.4 0.2
...
select에서 컬럼을 제외하는 방법을 names( )와 %in%을 사용하여 제외하는 방법과 비교해서 알아두기 바란다.
> iris[, !names(iris) %in% c("Sepal.Length", "Species")]
Sepal.Width Petal.Length Petal.Width
1 3.5 1.4 0.2
2 3.0 1.4 0.2
3 3.2 1.3 0.2
4 3.1 1.5 0.2
5 3.6 1.4 0.2
...