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
제2부 제1장 연산자 부분도 참고하기 바랍니다.↩︎