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) 비교 연산자의 종류
비교 연산자는 대상이 되는 두 객체를 비교해 결과 값을 참, 거짓으로 판별해 논리형 데이터인 TRUE와 FALSE로 출력합니다. 비교 연산자의 종류는 다음과 같습니다.
| 연산자 | 정의 | 예: 스칼라 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() | |
'Ⅰ. R 기초' 카테고리의 다른 글
| 19. 선형대수 연산 시행하기 (수정중) (0) | 2021.05.14 |
|---|---|
| 18. 기본 산술 함수 파악하기 (0) | 2020.10.27 |
| 16. 데이터 유형 및 구조 변환하기 (수정중) (0) | 2020.10.22 |
| 15. 데이터 유형 및 구조 판별하기 (수정중) (0) | 2020.10.21 |