본문 바로가기
R프로그래밍

R프로그래밍 - AND, OR, NOT 연산자

by 미스터탁 2020. 7. 2.

컴퓨터에서 가장 많이 사용하는 AND, OR, NOT 연산자에 대해 다루어 보도록 하겠습니다.

 

이 연산자들은 매우 자주 사용하므로 꼭 알고 계셔야합니다.

 

R뿐만이 아니라, 다른 프로그래밍 언어에서도 공통적으로 사용합니다.

 

AND연산자는 '그리고' 의 의미를 지닙니다. 두 개의 값이 모두 TRUE여야지만 TRUE를 반환합니다.

 

T & T ## AND
T & F 
F & F

 

 

 

OR연산자는 '또는'의 의미를 지닙니다. 두 개의 값중 하나 이상 TURE값이 있으면 TRUE를 반환합니다.

T | T  ##OR
T | F
F | F

 

 

NOT연산자는 '반대'를 의미합니다. TRUE값이 들어오면 FALSE, FALSE값이 들어오면 TRUE값을 반환합니다.

!T ## NOT
!F

 

 

 

이제 조금 더 직관적인 이해를 돕기 위해 예를 들어보겠습니다.

 

아래와 같이 문자형 벡터를 선언하고, 강아지가 들어간 글자와 2가 들어간 글자를 찾도록 하겠습니다.

 

이전에서 다루었듯이, str_detect함수를 이용해서 추출 할 수가 있죠.

 

x<-c("강아지","고양이","강아지2","고양이2","강아지3","고양이3")
str_detect(x,"강아지") 
str_detect(x,"2")
x[str_detect(x,"강아지")]
x[str_detect(x,"2")]

 

여기서 '강아지'라는 글자와 '2'가 모두 들어간 글자를 뽑고싶다면 & 연산자를 통해 가져올 수 있고, '강아지' 또는 '2'가 들어간 글자를 가져오고 싶다면 | 연산자를 통해 가져올 수 있습니다.

 

x[str_detect(x,"강아지") & str_detect(x,"2")]
x[str_detect(x,"강아지") | str_detect(x,"2")]

 

조금 더 응용해서, '강아지'와 '2'가 둘다 들어간 것만 빼고 뽑고싶다면 &연산자와 !연산자를 이용 할 수 있겠죠? 

 

여기서 아래 코드와 같이 ( ) 로 꼭 묶어 주셔야합니다.

x[!(str_detect(x,"강아지") & str_detect(x,"2"))]

 

 

( ) 로 묶지 않고 아래 코드처럼 사용하시면 '강아지'가 아니고 '2'가 들어간 것을 추출하라는 의미를 지니게 됩니다. 

 

그래서 고양이 2를 출력하게 됩니다.

x[!str_detect(x,"강아지") & str_detect(x,"2")] # 강아지가 아니고 숫자 2가 들어간 것 

 

이처럼 연산자를 활용하면 자신이 원하는 조건에 따라 특정 객체를 추출할 수 있습니다. 

반응형

댓글