벡터화된 논리 파트 2
Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 21번째.
AND와 OR에 벡터화된 버전이 있는 것처럼, NOT 연산자 또한 벡터에서 요소별(element-wise)로 작동합니다. 논리값 벡터에 !를 적용하면 각 요소를 개별적으로 반전시킵니다.
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUE각 TRUE는 FALSE가 되고, 각 FALSE는 TRUE가 됩니다. 이는 특정 조건을 충족하지 않는 요소를 찾고자 할 때 특히 유용합니다:
temperatures <- c(18, 25, 30, 15, 22)
# 20도보다 높지 않은 온도를 찾습니다
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSE벡터화된 NOT을 & 및 |와 결합하여 복잡한 필터를 구축할 수 있습니다:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# 참여 가능 조건: 나이가 18세 이상이거나 (18세 미만이면서 허가가 있는 경우)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE기억하세요: 벡터를 다룰 때는 단일 &, |, !를 사용하고, 단일 값을 비교할 때는 이중 &&, ||를 사용하세요.
챌린지
쉬움벡터화된 NOT 연산자(!)를 & 및 |와 함께 사용하여 복잡한 요소별 논리 조건을 만드세요.
다음과 같은 벡터들이 제공됩니다:
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)NOT 연산자를 포함한 벡터화된 논리 연산자를 사용하여 다음 논리 벡터들을 생성하세요:
- 60점보다 크거나 같지 않은 각 점수에 대해
TRUE를 저장하는failed라는 벡터를 생성합니다. attended의 반대 값을 저장하는(각 값을 반전시킴)absent라는 벡터를 생성합니다.- 출석하지 않았거나(OR) 숙제를 제출하지 않은 각 학생에 대해
TRUE를 저장하는at_risk라는 벡터를 생성합니다. - 점수가 60점보다 크거나 같고 동시에(AND) 출석하지 않은 각 학생에 대해
TRUE를 저장하는passing_but_absent라는 벡터를 생성합니다. - (점수가 50점 미만임) 또는(OR) (출석하지 않았고(AND) 숙제를 제출하지 않음)에 해당하는 각 학생에 대해
TRUE를 저장하는needs_support라는 벡터를 생성합니다.
print() 함수를 사용하여 failed, absent, at_risk, passing_but_absent, needs_support를 정확히 이 순서대로 출력하세요.
치트 시트
NOT 연산자(!)는 벡터의 각 요소에 대해 개별적으로 논리값을 반전시킵니다:
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUE조건을 만족하지 않는 요소를 찾으려면 !를 사용하세요:
temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSE벡터화된 NOT을 & 및 |와 결합하여 복잡한 필터를 만들 수 있습니다:
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# 참여 가능 조건: 나이 >= 18 또는 (18세 미만이고 허가를 받은 경우)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE기억하세요: 벡터에는 단일 &, |, !를 사용하고, 단일 값에는 이중 &&, ||를 사용합니다.
직접 해보기
# 주어진 벡터
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
# TODO: 아래에 코드를 작성하세요
# 1. 'failed' 생성 - 점수가 60점 이상이 아닌(NOT >= 60) 경우 TRUE
# 2. 'absent' 생성 - attended의 반대
# 3. 'at_risk' 생성 - 출석하지 않았거나(NOT attended) 과제를 제출하지 않은(NOT submitted homework) 경우
# 4. 'passing_but_absent' 생성 - 점수가 60점 이상이고 출석하지 않은 경우
# 5. 'needs_support' 생성 - (점수가 50점 미만) 또는 (출석하지 않고 과제도 제출하지 않은) 경우
# 결과 출력
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.