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)

예 :

# 데이터
x <- 5
y <- 16

# 데이터의 산술 연산
x + y
## [1] 21
x - y
## [1] -11
x * y
## [1] 80
y / x
## [1] 3.2
y %/% x
## [1] 3
y %% x
## [1] 1
y ^ x
## [1] 1048576

4.8.2 관계 연산자

관계 연산자는 값을 비교하는 데 사용됩니다. 다음은 R에서 사용할 수있는 관계 연산자 목록입니다.

연산자 설 명
x < y xy보다 작은가
x > y xy보다 큰가
x <= y xy보다 작거나 같은가
x >= y xy보다 크거나 같은가
x == y xy와 같은가
x != y xy와다른가

관계 연산자는 이와 같이 두 개 변수 간의 비교에 사용되는 연산자입니다.

예 :

# 데이터
x <- 5
y <- 16

# 데이터의 비교 연산
x < y
## [1] TRUE
x > y
## [1] FALSE
x <= 5
## [1] TRUE
y >= 20
## [1] FALSE
y == 16
## [1] TRUE
x != 5
## [1] FALSE

4.8.3 벡터 연산

위에서 언급한 연산자는 벡터에서도 작동합니다. 위에서 사용된 변수는 사실 단일 요소 벡터였습니다.

다음 장에서 설명하겠지만 R에서 벡터는 c() 함수(여기서 c는 concatenate 즉, 연결을 의미함)를 사용하여 만들 수 있습니다.

이러한 벡터의 연산은 벡터의 요소별로 1:1 방식으로 수행됩니다. 다음에 예가 있습니다.

# 데이터 : 벡터
x <- c(2,8,3)
y <- c(6,4,1)

# 데이터의 연산
x + y             # 산술연산
## [1]  8 12  4
x > y             # 관계연산
## [1] FALSE  TRUE  TRUE

연산에 사용되는 (피연산자) 두 개의 벡터 길이 (요소 수, length)가 일치하지 않으면 어떻게 될까요? 더 짧은 요소의 요소가 더 긴 요소의 길이와 일치하도록 순환 방식(cycling, 또는 자동채움)으로 재활용됩니다.

R은 긴 벡터의 길이가 짧은 벡터 길이의 정수 배가 아닌 경우 경고메시지를 발생합니다.

# 길이가 다른 두 개의 벡터
x <- c(2, 1, 8, 3)     # 4개의 요소로 구성된 x
y <- c(9, 4)           # 2개의 요소로 구성된 y

# 두 벡터의 연산
x + y                  # y의 요소들이 c(9, 4, 9, 4)와 같이 (9, 4)가 순환되어 자동채움됨.
## [1] 11  5 17  7
x - 1                  # 상수 1은 c(1, 1, 1, 1)와 같이 자동 순환됨.
## [1] 1 0 7 2
x + c(1, 2, 3)         # x는 요소 갯수가 4개인 반면, c(1, 2, 3)은 자동순환으로 c(1, 2, 3, 1)로 처리함
## 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)

연산자 &| 는 더 긴 피연산자의 길이를 갖는 결과를 생성하는 요소별 연산을 수행합니다.

하지만 && 그리고|| 는 단일 길이 논리 벡터가 되는 피연산자의 첫 번째 요소만 검사합니다.

0FALSE로 간주되고 0이 아닌 숫자TRUE로 간주됩니다.

예제 실행.

# 논리 데이터
x <- c(TRUE,FALSE,0,6)
y <- c(FALSE,TRUE,FALSE,TRUE)

# 논리 데이터의 논리 연산
! x
## [1] FALSE  TRUE  TRUE FALSE
x & y
## [1] FALSE FALSE FALSE  TRUE
x && y
## [1] FALSE
x | y
## [1]  TRUE  TRUE FALSE  TRUE
x || y
## [1] TRUE

x & yx && y의 결과를 꼭 비교확인해 보기 바랍니다.

마찬가지로.

x | yx || y의 결과를 꼭 비교확인해 보기 바랍니다.

4.8.5 할당 연산자

이러한 연산자는 변수에 값을 할당하는 데 사용됩니다.

연산자 설 명
<-, <<-, = 왼쪽 방향의 할당
->, ->> 오른쪽 방향의 할당

연산자 <-=는 거의 같은 환경에서 변수에 할당하는 데 거의 같은 의미로 사용할 수 있습니다.

<<- 연산자는 상위 환경의 변수에 할당하는 데 사용됩니다 (전역 할당과 비슷 함). 이에 대해서는 제3부의 제4장에서 설명할 기회가 있을 것입니다.

오른쪽 할당은 사용 가능하지만 거의 사용되지 않습니다.