본문 바로가기
R

[R] 비교연산자, 논리연산자

by JKyun 2017. 2. 25.

안녕하세요. 우주신입니다.



오늘은 비교연산자와 논리 연산자에 대해 배워보겠습니다.


>, <, >=, <=, ==, !=, &, &&, |, ||, sum(), mean(), any(), all()




1. 비교 연산자


우선, X, Y, Z 벡터를 만들었습니다.


부등호 '>'는 초등학교 때 배웠던 적이 있죠?ㅎㅎ 대소관계를 비교할 때 쓰는 기호로서 'X가 Y보다 크다'를 의미합니다.

결과값으로는 TRUE, FALSE가 나옵니다. 마지막 6 > 3만 TRUE가 나온 것을 알 수 있습니다.


같은 원리로, X가 Y보다 값이 작다면 TRUE가 아니라면 FALSE가 결과값으로 출력됩니다.


Z는 구성요소가 하나임에도 X와 비교연산이 되는 것을 볼 수 있습니다.

이러한 경우에는, Z가 X의 길이에 자동으로 맞추어(4, 4, 4, 4, 4, 4) 비교연산이 이루어 집니다.


부등호 '>='는 '왼쪽항이 오른쪽 항보다 크거나 같다'는 뜻입니다.


반대로, 부등호 '<='는 '왼쪽항이 오른쪽 항보다 작거나 같다'는 뜻입니다.

(*주의: 부등호 순서 =>, =<는 오류 입니다.)


'=='는 두 항이 같으면 TRUE를 다르면 FALSE를 출력합니다.

'='과 절대 혼동하지 마시길 바랍니다!


반대로, '!='는 두 항이 다르면 TRUE를 같으면 FALSE를 출력합니다.



2. 논리 연산자


'&'는 'AND' 연산자 입니다.

두 조건을 동시에 만족할 때 TRUE, 아닐 경우에는 FALSE를 출력합니다.

위 코드에서는 X가 3보다 크고 5보다 작은 두 조건을 만족하는 4의 위치에서만 TRUE가 출력된 것을 알 수 있습니다.


'|'는 'OR' 연산자 입니다.

두 조건 중 하나만 만족해도 TRUE, 두 조건 모두 만족되지 않을 경우에는 FALSE를 출력합니다.


참고로, '&'과 '|'은 벡터 전체 결과를 나타내지만, '&&'과 '||'은 일반적인 'AND', 'OR' 연산자로서 벡터 첫번째 결과만 나타냅니다. (직접 해보셔요~)


인덱싱 안에 논리연산자를 넣어 값들을 찾는 경우가 많습니다. 이런식으로 자주 활용되니 꼭 익숙해지시기 바랍니다!


위와 같이 데이터가 작은 벡터의 경우 결과값을 쉽게 확인할 수 있지만, 데이터가 커지면 결과값을 일일이 확인할 수는 없겠죠?

이럴 때 sum(), mean(), any(), all() 함수와 함께 사용함으로써 효율성을 높일 수 있습니다.


sum() 함수를 활용하여 결과값 중 TRUE가 몇 개인지 한번에 파악할 수 있습니다.

벡터 X의 구성요소 중 3보다 크고 6보다 작은 값은 4,5 이므로 결과값으로 2개가 출력됐습니다.


mean() 함수를 활용하면 벡터 전체에서 TRUE가 얼만큼 있는지 퍼센트로 보여줍니다.

X의 구성요소 6개 중 3, 4, 5는 3개이므로 3/6=0.5 값이 나왔습니다.


-any(X>3): X>3 조건의 결과값 중 TRUE가 하나라도 있으면 TRUE를 반환해라.


-all(X>3): X>3 조건의 결과값이 모두 TRUE이면 TRUE를 반환해라.


X >= 1 의 결과값은 TRUE, TRUE, TRUE, TRUE, TRUE, TRUE이므로 all(X>=1)의 결과값도 TRUE 입니다.




끝.


수고하셨습니다~



댓글