5.14 벡터의 서브세팅
벡터를 하위 집합으로 만들 수 있는 방법에는 다음과 같은 네 가지 유형이 있습니다.
정수만 포함하는 숫자형 벡터입니다. 정수는 모두 양수, 모두 음수 또는 0이어야 합니다. 양의 정수로 부분 집합화하면 요소가 해당 위치에 유지됩니다.
<- c("one", "two", "three", "four", "five")
x1
# 정수형 벡터를 이용한 서브세팅
<- x1[c(3, 2, 5)]; y1 # y1벡터는 x1의 3, 2, 5 번쨰의 순으로 요소들을 서브세팅합니다. y1
## [1] "three" "two" "five"
<- x1[c(1, 1, 5, 5, 5, 2)]; y2 # y2벡터는 x1의 1번째 요소를 2번, 5번째 요소를 3번, 그리고 2번쨰 요소를 1번 서브세팅합니다. y2
## [1] "one" "one" "five" "five" "five" "two"
<- x1[c(-1, -3, -5)]; y3 # 음수의 사용은 그 요소를 제거합니다. 즉, y3는 x1의 1번쨰, 3번째, 5번째 요소를 제외한 서브세팅입니다. y3
## [1] "two" "four"
<- x1[c(1, -1)]; y4 # 그러나 음수와 양수를 동시에 사용하면 Error가 발생합니다. y4
## Error in x1[c(1, -1)]: only 0's may be mixed with negative subscripts
## Error in eval(expr, envir, enclos): 객체 'y4'를 찾을 수 없습니다
# 결측치를 제거하는 서브세팅
<- c(10, 3, NA, 5, 8, 1, NA) # NA는 결측치입니다.
x2 <- x2[!is.na(x2)]; y5 # y5는 x2의 요소 중 NA가 아닌 것(!is.na(x2))만 서브세팅합니다. y5
## [1] 10 3 5 8 1
# 논리형 벡터를 이용한 서브세팅
<- x2[x2 %% 2 == 0]; y6 # y6는 x2의 요소 중 2로 나눈 나머지가 0인 즉 짝수인 요소만 서브세팅합니다. y6
## [1] 10 NA 8 NA
# 그런데 NA도 출력됨을 주목하기 바랍니다.
# 벡터의 이름을 이용한 서브세팅
<- c(abc = 1, def = 2, xyz = 5) # x3는 이름이 붙여진 벡터입니다.
x3 <- x3[c("xyz", "def")]; y7 # y7는 x3의 "xyz", "def"요소를 서브세팅합니다. y7
## xyz def
## 5 2