트랙
/
R
R
/
학습 과정
/
불리언
불리

불리언 에서 R

1개의 연습 문제

불리언 소개

R의 불리언

참과 거짓 값은 logical 타입으로 표현해요. 이 타입에는 TRUE와 FALSE, 두 가지 값만 들어 있어요.

TRUE
#> [1] TRUE
FALSE
#> [1] FALSE
typeof(TRUE)
#> [1] "logical"

불리언 연산자

R에는 불리언 연산자가 다섯 개 있어요.

!TRUE # FALSE (not)
TRUE && FALSE # FALSE (scalar and)
TRUE || FALSE # TRUE (scalar or)

TRUE & FALSE # FALSE (vector and)
TRUE | FALSE # TRUE (vector or)

&&와 &는 불리언 "and"예요. &&의 양쪽에 있는 표현식이 모두 TRUE이면 TRUE로 평가돼요.

||와 |는 불리언 "or"예요. ||의 어느 한쪽 표현식이 TRUE이면 TRUE로 평가돼요.

참고로 and/or 연산자에는 두 가지 세트가 있어요.

  • 두 문자로 된 연산자는 단일 값에 대해 동작해요.
  • 한 문자로 된 연산자는 벡터의 각 원소에 대해 동작하고, 불리언 벡터를 반환해요.

이 차이는 vector-filtering 개념에서 중요해지고, 아마 더 명확해질 거예요.

단일 값에 &와 |를 사용한 위 예제가 동작하는 이유는, 이 값들이 길이가 1인 벡터로 취급되기 때문이에요. 동작 방식은 두 문자로 된 연산자와 미묘하게 달라요. 후자만 "단축 평가"를 하거든요. 왼쪽 값만으로 결과가 정해지면 오른쪽 값은 평가하지 않아요. 따라서 TRUE || anything은 anything이 어떤 논리 표현식을 나타내든 항상 TRUE이므로, anything은 무시돼요.

길이가 2 이상인 벡터에 &&나 ||를 사용하면 비교에 첫 번째 원소만 사용돼요. 그래서 TRUE/FALSE 하나만 나오고, 아마 경고 메시지도 함께 나올 거예요. 아마 의도한 것과는 다를 거예요.

!는 불리언 "not"이에요. TRUE와 FALSE 값을 서로 바꿔요.

!TRUE
#> [1] FALSE
!FALSE
#> [1] TRUE

표현식이 길고 복잡할수록, 의도를 분명히 하려면 괄호를 사용하는 게 좋아요.

(TRUE || FALSE) && (FALSE && TRUE)
#> [1] FALSE

TRUE || FALSE && (FALSE && TRUE)
#> [1] TRUE

배타적 논리합(즉, A 또는 B이지만 둘 다는 아님)을 위한 중위 연산자는 없어요. 이럴 때는 xor() 함수를 사용할 수 있어요.

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

불리언 배우기