%in% 연산자
Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 70번째.
때때로 벡터 내에 특정 값이 존재하는지 확인해야 할 때가 있습니다. %in% 연산자는 멤버십(포함 여부)을 테스트하는 깔끔한 방법을 제공하며, 일치하는 각 요소에 대해 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
기본 구문은 왼쪽의 값이 오른쪽의 벡터에 존재하는지 확인합니다:
fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)출력:
[1] TRUE여러 값을 동시에 확인할 수도 있습니다. 이 연산자는 테스트되는 각 값에 대해 하나의 결과를 갖는 논리 벡터를 반환합니다:
fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)출력:
[1] TRUE FALSE TRUE이로 인해 %in%은 필터링에 매우 유용합니다. 논리적 인덱싱과 결합하여 특정 집합에 속하는 요소를 추출할 수 있습니다:
numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])출력:
[1] 1 3 2%in% 연산자는 사용자 입력을 검증하거나 미리 정의된 허용 가능한 값 목록을 기반으로 데이터를 필터링할 때 특히 유용합니다.
챌린지
쉬움세 줄의 입력을 받게 됩니다:
- 인벤토리에 있는 아이템들의 쉼표로 구분된 목록 (예:
apple,banana,milk,bread,eggs,cheese) - 쇼핑 리스트에 있는 아이템들의 쉼표로 구분된 목록 (예:
milk,butter,eggs,juice) - 할인 중인 아이템들의 쉼표로 구분된 목록 (예:
bread,juice,yogurt)
%in% 연산자를 사용하여 다음을 수행하세요:
- 각 쉼표로 구분된 입력으로부터 문자형 벡터를 생성합니다.
- 쇼핑 리스트 아이템 중 인벤토리에 이미 있는 아이템이 무엇인지 확인하고 논리형 벡터 결과를 출력합니다.
- 인벤토리에 없는 쇼핑 리스트 아이템(사야 할 아이템)을 필터링하여 출력합니다.
- 사야 할 아이템 중 할인 중인 아이템을 필터링하여 출력합니다.
예를 들어, 입력이 다음과 같다면:
apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butter출력은 다음과 같아야 합니다:
[1] TRUE FALSE TRUE FALSE TRUE
[1] "butter" "juice"
[1] "butter" "juice"설명:
- 인벤토리와 대조한 쇼핑 리스트 확인: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
- 인벤토리에 없는 아이템 (사야 할 아이템): butter, juice
- 사야 할 아이템 중 할인 중인 아이템: butter와 juice 모두 할인 목록에 있음
벡터에 포함되지 않은 아이템을 찾으려면 %in%와 함께 ! 연산자를 사용하세요.
치트 시트
%in% 연산자는 벡터 내에 값이 존재하는지 확인하여 TRUE 또는 FALSE를 반환합니다:
fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)출력:
[1] TRUE여러 값을 한 번에 확인하여 논리형 벡터를 얻습니다:
fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)출력:
[1] TRUE FALSE TRUE%in%을 논리적 인덱싱과 함께 사용하여 요소를 필터링합니다:
numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])출력:
[1] 1 3 2!를 %in%과 함께 사용하여 벡터에 포함되지 않은 항목을 찾습니다:
items <- c("milk", "butter", "eggs")
inventory <- c("milk", "eggs")
print(items[!items %in% inventory])출력:
[1] "butter"직접 해보기
# 입력 읽기
con <- file("stdin", "r")
inventory_input <- suppressWarnings(readLines(con, n = 1))
shopping_list_input <- suppressWarnings(readLines(con, n = 1))
sale_items_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: 아래에 코드를 작성하세요
# 1. strsplit()을 사용하여 쉼표로 구분된 각 입력에서 문자 벡터 생성
# 2. 쇼핑 리스트 항목 중 인벤토리에 이미 있는 항목 확인 (%in% 사용)
# 3. 인벤토리에 없는 쇼핑 리스트 항목 필터링 (%in%와 함께 ! 사용)
# 4. 구매해야 할 항목 중 세일 중인 항목 필터링이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.