0Pricing
R Academy · 강의

논리 연산자와 불리언 논리

불리언 연산을 위한 &, |, !, xor(), any(), all()을 이해합니다.

논리 연산자와 불리언 논리은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

불리언 논리 소개

불리언 논리는 프로그래밍에서 의사 결정을 내리는 기초입니다. R에서 논리값은 TRUE와 FALSE입니다. 논리 연산자는 이러한 값을 결합하여 복잡한 조건을 만듭니다.

# Boolean values in R
is_raining <- TRUE
is_cold <- FALSE
cat('Is raining:', is_raining, '
')
cat('Is cold:', is_cold, '
')
cat('Class:', class(is_raining), '
')

&를 사용한 요소별 AND

& 연산자는 벡터에 요소별 AND를 수행합니다. 대응하는 두 요소가 모두 TRUE일 때만 TRUE를 반환합니다. 벡터의 모든 요소를 처리합니다.

ages <- c(15, 22, 17, 30, 19)
has_id <- c(FALSE, TRUE, FALSE, TRUE, TRUE)

# Can buy alcohol? (must be 18+ AND have ID)
can_buy <- (ages >= 18) & has_id
cat('Ages >= 18:', ages >= 18, '
')
cat('Has ID:', has_id, '
')
cat('Can buy:', can_buy, '
')

|를 사용한 요소별 OR

| 연산자는 요소별 OR를 수행합니다. 대응하는 요소 중 하나 이상이 TRUE이면 TRUE를 반환합니다.

scores_math <- c(85, 45, 72, 38, 90)
scores_english <- c(40, 88, 65, 70, 55)

# Pass if either subject >= 60
passes <- (scores_math >= 60) | (scores_english >= 60)
cat('Math pass:', scores_math >= 60, '
')
cat('English pass:', scores_english >= 60, '
')
cat('Overall pass:', passes, '
')

!를 사용한 논리 NOT

! 연산자는 논리값을 부정하여 TRUE를 FALSE로, FALSE를 TRUE로 바꿉니다. 평가 순서에서 &와 |보다 먼저 적용됩니다.

is_weekend <- c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE)
cat('Is weekend:', is_weekend, '
')
cat('Is weekday:', !is_weekend, '
')

# Count weekdays
cat('Number of weekdays:', sum(!is_weekend), '
')

&&를 사용한 스칼라 AND

&&는 AND의 스칼라 버전입니다. 각 벡터의 첫 번째 요소만 평가하며, 단락 평가를 사용합니다. 왼쪽이 FALSE이면 오른쪽은 평가하지 않습니다.

x <- 10

# Short-circuit: second condition skipped if first is FALSE
if (x > 0 && x < 100) {
  cat('x is a positive double-digit or less
')
}

# && only looks at first element
cat('TRUE && FALSE:', TRUE && FALSE, '
')
cat('TRUE & FALSE (vectorised):', TRUE & FALSE, '
')

||를 사용한 스칼라 OR

||는 단락 평가를 사용하는 OR의 스칼라 버전입니다. 왼쪽이 TRUE이면 오른쪽은 평가하지 않습니다. 하나의 결과만 필요할 때 if 문에서 ||를 사용합니다.

user_role <- 'admin'

# Short-circuit OR — stops at first TRUE
if (user_role == 'admin' || user_role == 'superuser') {
  cat('Access granted
')
} else {
  cat('Access denied
')
}

cat('FALSE || TRUE:', FALSE || TRUE, '
')

xor()를 사용한 배타적 OR

xor(x, y)는 x 또는 y 중 정확히 하나가 TRUE일 때 TRUE를 반환합니다. 두 값이 같으면 FALSE를 반환합니다. 전환 논리에 유용합니다.

# xor truth table
cat('xor(TRUE, TRUE):', xor(TRUE, TRUE), '
')   # FALSE
cat('xor(TRUE, FALSE):', xor(TRUE, FALSE), '
')  # TRUE
cat('xor(FALSE, TRUE):', xor(FALSE, TRUE), '
')  # TRUE
cat('xor(FALSE, FALSE):', xor(FALSE, FALSE), '
') # FALSE

# Practical: exactly one sensor triggered
sensor_a <- c(TRUE, FALSE, TRUE, FALSE)
sensor_b <- c(FALSE, FALSE, TRUE, TRUE)
cat('Exactly one sensor:', xor(sensor_a, sensor_b), '
')

any()와 all()

any()는 하나 이상의 요소가 TRUE이면 TRUE를 반환합니다. all()은 모든 요소가 TRUE일 때만 TRUE를 반환합니다. 두 함수 모두 논리 벡터를 하나의 값으로 축약합니다.

temperatures <- c(22.1, 24.5, 19.8, 31.2, 28.0)

cat('Any temperature above 30?', any(temperatures > 30), '
')
cat('All temperatures above 15?', all(temperatures > 15), '
')
cat('All temperatures above 25?', all(temperatures > 25), '
')

# Useful for data validation
test_scores <- c(78, 85, 92, 88, 76)
cat('All passed (>=60)?', all(test_scores >= 60), '
')

논리 연산자 결합하기

여러 논리 연산자를 연결하여 복잡한 조건을 만들 수 있습니다. R은 !, &, | 순서로 평가합니다. 의도를 명확히 하려면 괄호를 사용하세요.

age <- 25
income <- 55000
credit_score <- 720

# Loan eligibility: age 21-65, income >= 40000, credit >= 700
eligible <- (age >= 21 && age <= 65) &&
            (income >= 40000) &&
            (credit_score >= 700)
cat('Loan eligible:', eligible, '
')

데이터 프레임에 논리 연산자 사용하기

논리 연산자는 데이터 프레임을 필터링할 때 특히 유용합니다. 여러 조건을 결합하여 필요한 행만 정확하게 선택할 수 있습니다.

# Simple data frame
names_vec <- c('Alice', 'Bob', 'Carol', 'Dave', 'Eve')
ages_vec <- c(28, 35, 22, 45, 31)
salaries <- c(55000, 72000, 38000, 90000, 61000)

# Filter: age 25-40 AND salary above 50000
mask <- (ages_vec >= 25 & ages_vec <= 40) & (salaries > 50000)
cat('Matching employees:', names_vec[mask], '
')

불리언 산술

R에서 산술 연산을 수행할 때 TRUE는 1로, FALSE는 0으로 처리됩니다. 따라서 sum()으로 TRUE 값의 개수를 세고 mean()으로 그 비율을 구할 수 있습니다.

responses <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE)

cat('Number of TRUE:', sum(responses), '
')
cat('Proportion TRUE:', mean(responses), '
')
cat('Percentage:', mean(responses) * 100, '%
')

# Count values meeting a condition
scores <- c(88, 45, 92, 61, 73, 55, 84)
cat('Number passing (>=60):', sum(scores >= 60), '
')

빠른 확인

R에서 &와 &&의 차이는 무엇인가요?

복습: R의 불리언 논리

훌륭합니다! 이 레슨의 핵심 내용을 정리해 보겠습니다.

  • &와 |는 벡터화되어 요소별로 비교합니다.
  • &&와 ||는 단락 평가를 사용하는 스칼라 연산자이므로 if 문에서 사용합니다.
  • !는 논리값을 부정합니다.
  • xor()는 인수 중 정확히 하나가 TRUE일 때 TRUE를 반환합니다.
  • any()와 all()은 논리 벡터를 하나의 값으로 축약합니다.
  • TRUE == 1이고 FALSE == 0이므로 논리 벡터를 합산하거나 평균 낼 수 있습니다.
# Summary: all logical operators at a glance
x <- c(TRUE, FALSE, TRUE)
y <- c(TRUE, TRUE, FALSE)
cat('x & y :', x & y, '
')
cat('x | y :', x | y, '
')
cat('!x    :', !x, '
')
cat('xor   :', xor(x, y), '
')
cat('any(x):', any(x), '
')
cat('all(x):', all(x), '
')

자주 묻는 질문

“논리 연산자와 불리언 논리” 강의는 무료인가요?

네 — “논리 연산자와 불리언 논리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“논리 연산자와 불리언 논리”에서 뭘 배우나요?

불리언 연산을 위한 &, |, !, xor(), any(), all()을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

R Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“논리 연산자와 불리언 논리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 산술 및 비교 연산자
  2. 논리 연산자와 불리언 논리
  3. 할당 및 특수 연산자
  4. 연산자 우선순위와 복잡한 표현식
← R Academy(으)로 돌아가기