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 |