4.8 연산자
R에는 산술, 논리 및 비트 연산을 포함한 작업을 수행하는 여러 연산자(operator)가 있습니다.
R의 연산자는 주로 다음 범주로 분류 할 수 있습니다.
- 산술 연산자(Arithmetic operators)
- 관계 연산자(Relational operators)
- 논리 연산자(Logical operators)
- 할당 연산자(Assignment operators)
4.8.1 산술 연산자
이 연산자는 덧셈 및 곱셈과 같은 산술적 연산을 수행하는 데 사용됩니다. 다음은 R에서 사용할 수 있는 산술 연산자 목록입니다.
연산자 | 설명 |
---|---|
x + y |
덧셈 |
x – y |
뺄셈 |
x * y |
곱셈 |
x / y |
나눗셈 |
x ^ y |
제곱 |
x %% y |
나눗셈의 나머지 ( 7 %% 4 인 경우 3 ) |
x %/% y |
나눗셈의 몫 ( 7 %/% 4 인 경우 1 ) |
예 :
# 데이터
<- 5
x <- 16
y
# 데이터의 산술 연산
+ y x
## [1] 21
- y x
## [1] -11
* y x
## [1] 80
/ x y
## [1] 3.2
%/% x y
## [1] 3
%% x y
## [1] 1
^ x y
## [1] 1048576
4.8.2 관계 연산자
관계 연산자는 값을 비교하는 데 사용됩니다. 다음은 R에서 사용할 수있는 관계 연산자 목록입니다.
연산자 | 설 명 |
---|---|
x < y |
x 가 y 보다 작은가 |
x > y |
x 가 y 보다 큰가 |
x <= y |
x 가 y 보다 작거나 같은가 |
x >= y |
x 가 y 보다 크거나 같은가 |
x == y |
x 가 y 와 같은가 |
x != y |
x 가 y 와다른가 |
관계 연산자는 이와 같이 두 개 변수 간의 비교에 사용되는 연산자입니다.
예 :
# 데이터
<- 5
x <- 16
y
# 데이터의 비교 연산
< y x
## [1] TRUE
> y x
## [1] FALSE
<= 5 x
## [1] TRUE
>= 20 y
## [1] FALSE
== 16 y
## [1] TRUE
!= 5 x
## [1] FALSE
4.8.3 벡터 연산
위에서 언급한 연산자는 벡터에서도 작동합니다. 위에서 사용된 변수는 사실 단일 요소 벡터였습니다.
다음 장에서 설명하겠지만 R에서 벡터는 c()
함수(여기서 c는 concatenate 즉, 연결을 의미함)를 사용하여 만들 수 있습니다.
이러한 벡터의 연산은 벡터의 요소별로 1:1 방식으로 수행됩니다. 다음에 예가 있습니다.
# 데이터 : 벡터
<- c(2,8,3)
x <- c(6,4,1)
y
# 데이터의 연산
+ y # 산술연산 x
## [1] 8 12 4
> y # 관계연산 x
## [1] FALSE TRUE TRUE
연산에 사용되는 (피연산자) 두 개의 벡터 길이 (요소 수, length)가 일치하지 않으면 어떻게 될까요? 더 짧은 요소의 요소가 더 긴 요소의 길이와 일치하도록 순환 방식(cycling, 또는 자동채움)으로 재활용됩니다.
R은 긴 벡터의 길이가 짧은 벡터 길이의 정수 배가 아닌 경우 경고메시지를 발생합니다.
# 길이가 다른 두 개의 벡터
<- c(2, 1, 8, 3) # 4개의 요소로 구성된 x
x <- c(9, 4) # 2개의 요소로 구성된 y
y
# 두 벡터의 연산
+ y # y의 요소들이 c(9, 4, 9, 4)와 같이 (9, 4)가 순환되어 자동채움됨. x
## [1] 11 5 17 7
- 1 # 상수 1은 c(1, 1, 1, 1)와 같이 자동 순환됨. x
## [1] 1 0 7 2
+ c(1, 2, 3) # x는 요소 갯수가 4개인 반면, c(1, 2, 3)은 자동순환으로 c(1, 2, 3, 1)로 처리함 x
## Warning in x + c(1, 2, 3): 두 객체의 길이가 서로 배수관계에 있지 않습니다
## [1] 3 3 11 4
# 단, 경고메시지가 나타남
4.8.4 논리 연산자
논리 연산자는 AND, OR 등과 같은 부울 연산을 수행하는 데 사용됩니다.
연산자 | 설 명 |
---|---|
! x |
논리 NOT |
x & y |
요소단위의 논리곱 (AND) |
x && y |
논리곱(AND) |
x | y |
요소단위의 논리합(OR) |
x || y |
논리합(OR) |
연산자 &
와 |
는 더 긴 피연산자의 길이를 갖는 결과를 생성하는 요소별 연산을 수행합니다.
하지만 &&
그리고||
는 단일 길이 논리 벡터가 되는 피연산자의 첫 번째 요소만 검사합니다.
0
은 FALSE
로 간주되고 0이 아닌 숫자
는 TRUE
로 간주됩니다.
예제 실행.
# 논리 데이터
<- c(TRUE,FALSE,0,6)
x <- c(FALSE,TRUE,FALSE,TRUE)
y
# 논리 데이터의 논리 연산
! x
## [1] FALSE TRUE TRUE FALSE
& y x
## [1] FALSE FALSE FALSE TRUE
&& y x
## [1] FALSE
| y x
## [1] TRUE TRUE FALSE TRUE
|| y x
## [1] TRUE
x & y
와x && y
의 결과를 꼭 비교확인해 보기 바랍니다.마찬가지로.
x | y
와x || y
의 결과를 꼭 비교확인해 보기 바랍니다.
4.8.5 할당 연산자
이러한 연산자는 변수에 값을 할당하는 데 사용됩니다.
연산자 | 설 명 |
---|---|
<- , <<- , = |
왼쪽 방향의 할당 |
-> , ->> |
오른쪽 방향의 할당 |
연산자 <-
와 =
는 거의 같은 환경에서 변수에 할당하는 데 거의 같은 의미로 사용할 수 있습니다.
<<-
연산자는 상위 환경의 변수에 할당하는 데 사용됩니다 (전역 할당과 비슷 함). 이에 대해서는 제3부의 제4장에서 설명할 기회가 있을 것입니다.
오른쪽 할당은 사용 가능하지만 거의 사용되지 않습니다.