[프로그래밍] R의 마이너스 인덱싱: 특정 요소 제외하는 강력한 기능
R에서는 벡터, 리스트, 데이터 프레임 등의 요소를 선택할 때 다양한 인덱싱 방법을 사용할 수 있습니다. 그중에서도 마이너스(-
) 인덱싱은 특정 요소를 제외하는 기능을 제공하는 R만의 독특한 개념입니다. 이번 글에서는 R의 마이너스 인덱싱이 어떻게 동작하는지, 어떤 경우에 유용한지 살펴보겠습니다.
1. 마이너스 인덱싱이란?
일반적으로 인덱싱은 특정 요소를 선택할 때 사용됩니다. 하지만 R에서는 마이너스(-) 인덱싱을 사용하면 특정 요소를 제외한 결과를 반환합니다.
✅ 기본 예제
x <- c(10, 20, 30, 40, 50)
print(x[-1]) # 첫 번째 요소 제외
print(x[-c(2, 4)]) # 두 번째와 네 번째 요소 제외
print(x[-length(x)]) # 마지막 요소 제외
출력 결과:
[1] 20 30 40 50
[1] 10 30 50
[1] 10 20 30 40
위 코드에서 x[-1]
은 첫 번째 요소(10)를 제외한 벡터를 반환하고, x[-c(2, 4)]
은 2번(20)과 4번(40) 요소를 제외한 벡터를 반환합니다.
2. 마이너스 인덱싱의 동작 원리
🔹 단일 요소 제거
x <- c("a", "b", "c", "d")
x[-2] # 두 번째 요소 "b" 제외
출력:
[1] "a" "c" "d"
🔹 여러 개의 요소 제거
x <- c(5, 10, 15, 20, 25)
x[-c(2, 4)] # 두 번째(10)와 네 번째(20) 요소 제외
출력:
[1] 5 15 25
🔹 마지막 요소 제거
x[-length(x)]
출력:
[1] 5 10 15 20
🔹 음수와 양수를 혼합하면 오류 발생
x[c(1, -2)]
오류 메시지:
Error in x[c(1, -2)] : only 0's may be mixed with negative subscripts
주의! 음수 인덱스와 양수 인덱스를 함께 사용하면 오류가 발생합니다.
3. 데이터 프레임에서의 마이너스 인덱싱
🔹 특정 행 제거
df <- data.frame(id = 1:5, value = c(10, 20, 30, 40, 50))
print(df[-3, ]) # 세 번째 행 제거
출력:
id value
1 1 10
2 2 20
4 4 40
5 5 50
🔹 특정 열 제거
print(df[, -2]) # 두 번째 열 제거
출력:
id
1 1
2 2
3 3
4 4
5 5
4. 마이너스 인덱싱과 다른 언어 비교
언어 | x[-1] 의 의미 |
---|---|
R | 첫 번째 요소 제거 |
Python | 마지막 요소 선택 (x[-1] == x[length-1] ) |
C++ | 음수 인덱싱 지원 안 함 |
Java | 음수 인덱싱 지원 안 함 |
다른 언어에서는 -1
이 보통 마지막 요소를 의미하는 반면, R에서는 특정 요소를 제외하는 기능으로 동작합니다.
5. 마이너스 인덱싱의 활용 사례
🔹 특정 기준을 만족하는 데이터 제거
x <- c(3, 8, 12, 15, 20)
filtered_x <- x[-which(x > 10)] # 10보다 큰 값 제외
print(filtered_x)
출력:
[1] 3 8
🔹 결측치(NA) 제거
x <- c(5, NA, 10, 15, NA, 20)
x_clean <- x[!is.na(x)]
print(x_clean)
출력:
[1] 5 10 15 20
6. 결론
R의 마이너스 인덱싱은 특정 요소를 제외하는 강력한 기능입니다. 특히 벡터, 리스트, 데이터 프레임에서 특정 행이나 열을 제거할 때 매우 유용합니다. R을 다룰 때 마이너스 인덱싱을 잘 활용하면 데이터 조작이 훨씬 쉬워질 것입니다!
📌 요약:
x[-n]
→x
에서n
번째 요소 제거x[-c(a, b)]
→x
에서a
,b
번째 요소 제거- 데이터 프레임에서는
df[-row, ]
,df[, -col]
로 행과 열 제거 가능 - 음수와 양수 인덱스를 함께 사용하면 오류 발생
- 다른 언어와 다르게 R의 고유한 기능
이제 R의 마이너스 인덱싱을 활용해 더욱 효율적인 데이터 분석을 해보세요! 🚀
댓글
댓글 쓰기