R은 데이터 유형과 구조에 따라 다양한 연산이 존재하며, 연산에 따른 다양한 규칙(우선 순위)이 존재합니다. 연산자는 크게 산술 연산자, 비교 연산자, 논리 연산자, 특수 연산자로 구분할 수 있습니다. 

 

17.1. 산술 연산자

더보기

(1) 산술 연산자의 종류

일반적으로 산술 연산자는 수치형 데이터를 계산할 때 사용합니다. 산술 연산자는 다른 프로그래밍 언어와 크게 다르지 않지만 나머지(%%)와 정수 몫(%/%) 연산에서 문법적 차이가 존재하니 주의해야 합니다. 

연산자 정의 예시: 스칼라 3과 2를 가지고 연산
+ 덧셈   > 3 + 2
  [1] 5
- 뻴셈   > 3 - 2
  [1] 1
* 곱셈   > 3 * 2
  [1] 6
/ 나눗셈   > 3 / 2
  [1]  1.5
%% 나머지   > 3 %% 2
  [1] 1
%/% 정수 몫   > 3 %/% 2
  [1] 1
^ 거듭제곱   > 3 ^ 2
  [1] 9

 

17.2. 비교 연산자

더보기

(1) 비교 연산자의 종류

비교 연산자는 대상이 되는 두 객체를 비교해 결과 값을 참, 거짓으로 판별해 논리형 데이터인 TRUEFALSE로 출력합니다. 비교 연산자의 종류는 다음과 같습니다. 

연산자 정의 예: 스칼라 3과 2를 가지고 연산
> ~보다 크다.   > 3 > 2
  [1] TRUE
>= ~보다 크거나 같다.   > 3 >= 2
  [1] TRUE
< ~보다 작다.   > 3 < 2
  [1] FALSE
<= ~보다 작거나 같다.   > 3 <= 2
  [1] FALSE
== ~는 같다.   > 3 == 2 
  [1] FALSE
!= ~는 다르다.   > 3 != 2
  [1] TRUE

 

17.3. 논리 연산자와 논리 함수

더보기

(1) 논리 연산자의 종류

논리 연산자는 주로 조건생성 함수와 조건문에서 함께 사용되며, 여러 조건을 결합하여 그 값이 TRUE인지 FALSE인지 판별할 때 사용합니다. 그 종류는 다음과 같습니다. 

연산자 정의 설명 예시
& AND 결과를 벡터로 출력   >  c(TRUE. TRUE) & c(TRUE, FALSE)
  [1] TRUE FALSE 
&& 첫 번째 원소만 계산해서 출력   > c(TRUE, TRUE) && c(TRUE, FALSE)
  [1] TRUE
| OR 결과를 벡터로 출력   > c(TRUE, TRUE) | c(TRUE, FALSE)
  [1] TRUE TRUE
|| 첫 번째 원소만 계산해서 출력   > c(TRUE, TRUE) || c(TRUE, FALSE) 
  [1] TRUE
! NOT 논리 부정   > c(TRUE, TRUE) != c(TRUE, FALSE)
  [1] FALSE TRUE

 

(2) 논리 함수, all()

all() 함수는 벡터의 모든 원소가 TRUE인 경우, TRUE를 반환하는 함수입니다. 예시는 다음과 같습니다. 

all(TRUE, TRUE)
all(TRUE, FALSE)
all(FALSE, TRUE)
all(FALSE, FALSE)

 

(3) 논리 함수, any()

any() 함수는 벡터의 원소 중 하나라도 TRUE를 가질 경우, TRUE를 반환하는 함수입니다. 예시는 다음과 같습니다.

any(TRUE, TRUE)
any(TRUE, FALSE)
any(FALSE, TRUE)
any(FALSE, FALSE)

 

17.4. 특수 연산자

더보기

(1) 특수 연산자의 종류

특수 연산자란 %any%의 형식을 하고 있으며, 산술 · 비교 · 논리 연산자 외에 해당하지 않는 연산자들을 정의합니다. 특수 연산자의 주 용도는 선형 대수 연산 등의 이항 연산자 혹은 키워드를 새로 정의하는 것입니다. 대표적으로는 magrittr 패키지의 %>%(파이프 연산자, pipe operator), %*%(벡터 내적, dot product), %in%(포함 연산자, match operator) 등이 있습니다.

 

17.5. 연산의 우선 순위

더보기
우선순위 연산자 정의 및 설명 예시
1 :: ::: 이름 공간(name space)의 변수 접근  
2 $ @ 요소 추출하기, 슬롯 추출하기  
3 [ [[ 인덱스   > c(1,3,5,7,9)[2]
  [1] 3
4 ^ 거듭제곱   > 3 ^ 2
  [1] 9
5 - + 부호   -2, +3
6 : 수열 생성   > 1:10
  [1] 1 2 3 4 5 6 7 8 9 10
7 %any% 특수 연산자   > c(1,2,3) %*% c(1,2,3) # 벡터의 내적
  [1] 14
8 * / 곱셈, 나눗셈   > 3 * 2
  [1] 6
9 + - 덧셈, 뺄셈   > 3 + 2
  [1] 5 
10 >, >=, <, <=, ==, <> 비교 연산자   > 3 > 2
  [1] TRUE
11 ! 논리 부정   > c(TRUE, TRUE) != c(TRUE, FALSE)
  [1] FALSE TRUE
12 & && AND   >  c(TRUE. TRUE) & c(TRUE, FALSE)
  [1] TRUE FALSE 
13 | || OR   > c(TRUE, TRUE) | c(TRUE, FALSE) 
  [1] TRUE TRUE
14 ~ 식(formular)   Y ~ X_1 + X_2
15 -> ->> 객체 할당   35 -> data
16 <- <<-   data <- 35
17 =   data = 35
18 ? 도움말   ?lm()