Menu
Coddy logo textTech

벡터화된 논리 파트 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

기억하세요: 벡터를 다룰 때는 단일 &, |, !를 사용하고, 단일 값을 비교할 때는 이중 &&, ||를 사용하세요.

challenge icon

챌린지

쉬움

벡터화된 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 연산자를 포함한 벡터화된 논리 연산자를 사용하여 다음 논리 벡터들을 생성하세요:

  1. 60점보다 크거나 같지 않은 각 점수에 대해 TRUE를 저장하는 failed라는 벡터를 생성합니다.
  2. attended의 반대 값을 저장하는(각 값을 반전시킴) absent라는 벡터를 생성합니다.
  3. 출석하지 않았거나(OR) 숙제를 제출하지 않은 각 학생에 대해 TRUE를 저장하는 at_risk라는 벡터를 생성합니다.
  4. 점수가 60점보다 크거나 같고 동시에(AND) 출석하지 않은 각 학생에 대해 TRUE를 저장하는 passing_but_absent라는 벡터를 생성합니다.
  5. (점수가 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)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨