5.12 벡터의 연산7

5.12.1 산술연산

5.12.1.1 단순 산술 연산

단순 스칼라의 경우에는 더하기, 빼기, 곱하기, 나누기, 나머지, 몫 등의 연산을 수행할 수 있습니다.

x <- 5 + 2; x
## [1] 7
x <- 5 - 3; x
## [1] 2
x <- 5 * 2; x
## [1] 10
x <- 5 / 2; x
## [1] 2.5
x <- 5 %% 2; x
## [1] 1
x <- 5 %/% 2; x
## [1] 2
x <- 5 ^ 2; x
## [1] 25

5.12.1.2 벡터의 산술연산

연산자 좌우의 두 벡터에 대응되는 각각의 요소별로 연산을 합니다.

# 벡터 데이터
x <- c(1, 2, 3, 4)       # 4개 원소
y <- c(2, 3, 4, 5)       # 4개 원소
z <- c(1, 2)             # 2개 원소

# 더하기 연산
w1 <- x + y; w1
## [1] 3 5 7 9
w2 <- x + 5; w2
## [1] 6 7 8 9
# 빼기 연산
w3 <- y - 2; w3
## [1] 0 1 2 3
w4 <- x - z; w4
## [1] 0 0 2 2
# 곱하기 연산
w5 <- y * 2; w5
## [1]  4  6  8 10
w6 <- x - z; w6
## [1] 0 0 2 2
# 나누기 연산
w7 <- y / 2; w7
## [1] 1.0 1.5 2.0 2.5
w8 <- x / z; w8
## [1] 1 1 3 2
# 몫 연산
w9 <- y %/% x; w9
## [1] 2 1 1 1
# 나머지 연산
w10 <- y %% x; w10
## [1] 0 1 1 1

5.12.1.3 서로 다른 유형의 벡터 연산

# 문자와 숫자의 혼합 -> 모두 문자로 처리합니다.
y <- c("A", 1, 2); y               
## [1] "A" "1" "2"
class(y)
## [1] "character"
# 문자형 데이터의 산술 연산은 에러 발생
z <- y + 1                        # Error가 발생합니다.
## Error in y + 1: 이항연산자에 수치가 아닌 인수입니다
#  문자형과 논리형의 혼합 -> 모두 문자로 처리합니다.
y <- c("A", T, F); y              #  T, F 모두를 "TRUE"와 "FALSE" 문자형으로 변환합니다. 
## [1] "A"     "TRUE"  "FALSE"
class(y)
## [1] "character"
#  논리형과 숫자형의 연산
x <- c(T, F, TRUE, FALSE); x
## [1]  TRUE FALSE  TRUE FALSE
y <- c(1, 3); y
## [1] 1 3
                                  # y는 자동반복으로 c(1, 3, 1, 3)이됩니다.
                                  # x는 y와의 산술연산을 위해 (1, 0, 1, 0)으로 변환이 됩니다.
x + y                             # 2, 3, 2, 3 으로 출력이 됩니다.
## [1] 2 3 2 3

5.12.2 비교 연산

비교 연산자는 연산자 좌우의 값들을 비교하고 그 결과를 논리형(TRUE 또는 FALSE)으로 반환합니다. - (>=, >, ==, <, <= ) => 결과는 ‘TRUE’ 또는 ‘FALSE

x <- 5 < 3; x                       # 5 < 3의 비교결과인 FALSE가 변수 x에 저장됩니다.
## [1] FALSE
y <- c(10, 20, 30)
z <- y <= 10                        # y 벡터의 3개 요소 각각을 10보다 작거나 같은지 비교합니다.
z                                   # z는 논리형 벡터로 (TRUE, FALSE, FALSE)가 됩니다.
## [1]  TRUE FALSE FALSE

5.12.3 논리 연산 : |, &, !, ||, &&

논리 연산자는 논리형 벡터의 논리 연산(AND, OR, NOT 등)에 사용됩니다.

숫자형 벡터의 경우 값이 0인 경우는 FALSE, 그 이외에는 TRUE가 됩니다.

x <- c(TRUE, TRUE, FALSE, FALSE); x
## [1]  TRUE  TRUE FALSE FALSE
y <- c(TRUE, FALSE, TRUE, FALSE); y
## [1]  TRUE FALSE  TRUE FALSE
# 논리합 연산 : |          # 양쪽의 값이 모두 `FALSE`인 경우에만 `FALSE`. 그 이외에는 `TRUE`입니다.
x | y                    
## [1]  TRUE  TRUE  TRUE FALSE
# 논리곱 연산 : &
x & y
## [1]  TRUE FALSE FALSE FALSE
# 논리부정 연산 : !
!x
## [1] FALSE FALSE  TRUE  TRUE
!y
## [1] FALSE  TRUE FALSE  TRUE
# 논리합 연산 : ||
x || y
## [1] TRUE
# 논리곱 연산 : &&
x && y
## [1] TRUE
# 논리연산 함수의 예
isTRUE(y)
## [1] FALSE
# 요소의 갯수가 일치하지 않는 경우
z <- c(TRUE, FALSE, FALSE)
z | y                        # z 변수의 네 번쨰 요소가 TRUE로 자동채움되어 연산이 되며, 경고메시지를 출력합니다.
## Warning in z | y: 두 객체의 길이가 서로 배수관계에 있지 않습니다
## [1]  TRUE FALSE  TRUE  TRUE

  1. 제2부 제1장 연산자 부분도 참고하기 바랍니다.↩︎