5.12 벡터의 연산7
5.12.1 산술연산
5.12.1.1 단순 산술 연산
단순 스칼라의 경우에는 더하기, 빼기, 곱하기, 나누기, 나머지, 몫 등의 연산을 수행할 수 있습니다.
<- 5 + 2; x x
## [1] 7
<- 5 - 3; x x
## [1] 2
<- 5 * 2; x x
## [1] 10
<- 5 / 2; x x
## [1] 2.5
<- 5 %% 2; x x
## [1] 1
<- 5 %/% 2; x x
## [1] 2
<- 5 ^ 2; x x
## [1] 25
5.12.1.2 벡터의 산술연산
연산자 좌우의 두 벡터에 대응되는 각각의 요소별로 연산을 합니다.
# 벡터 데이터
<- c(1, 2, 3, 4) # 4개 원소
x <- c(2, 3, 4, 5) # 4개 원소
y <- c(1, 2) # 2개 원소
z
# 더하기 연산
<- x + y; w1 w1
## [1] 3 5 7 9
<- x + 5; w2 w2
## [1] 6 7 8 9
# 빼기 연산
<- y - 2; w3 w3
## [1] 0 1 2 3
<- x - z; w4 w4
## [1] 0 0 2 2
# 곱하기 연산
<- y * 2; w5 w5
## [1] 4 6 8 10
<- x - z; w6 w6
## [1] 0 0 2 2
# 나누기 연산
<- y / 2; w7 w7
## [1] 1.0 1.5 2.0 2.5
<- x / z; w8 w8
## [1] 1 1 3 2
# 몫 연산
<- y %/% x; w9 w9
## [1] 2 1 1 1
# 나머지 연산
<- y %% x; w10 w10
## [1] 0 1 1 1
5.12.1.3 서로 다른 유형의 벡터 연산
# 문자와 숫자의 혼합 -> 모두 문자로 처리합니다.
<- c("A", 1, 2); y y
## [1] "A" "1" "2"
class(y)
## [1] "character"
# 문자형 데이터의 산술 연산은 에러 발생
<- y + 1 # Error가 발생합니다. z
## Error in y + 1: 이항연산자에 수치가 아닌 인수입니다
# 문자형과 논리형의 혼합 -> 모두 문자로 처리합니다.
<- c("A", T, F); y # T, F 모두를 "TRUE"와 "FALSE" 문자형으로 변환합니다. y
## [1] "A" "TRUE" "FALSE"
class(y)
## [1] "character"
# 논리형과 숫자형의 연산
<- c(T, F, TRUE, FALSE); x x
## [1] TRUE FALSE TRUE FALSE
<- c(1, 3); y y
## [1] 1 3
# y는 자동반복으로 c(1, 3, 1, 3)이됩니다.
# x는 y와의 산술연산을 위해 (1, 0, 1, 0)으로 변환이 됩니다.
+ y # 2, 3, 2, 3 으로 출력이 됩니다. x
## [1] 2 3 2 3
5.12.2 비교 연산
비교 연산자는 연산자 좌우의 값들을 비교하고 그 결과를 논리형(TRUE
또는 FALSE
)으로 반환합니다.
- (>=
, >
, ==
, <
, <=
) => 결과는 ‘TRUE
’ 또는 ‘FALSE
’
<- 5 < 3; x # 5 < 3의 비교결과인 FALSE가 변수 x에 저장됩니다. x
## [1] FALSE
<- c(10, 20, 30)
y <- y <= 10 # y 벡터의 3개 요소 각각을 10보다 작거나 같은지 비교합니다.
z # z는 논리형 벡터로 (TRUE, FALSE, FALSE)가 됩니다. z
## [1] TRUE FALSE FALSE
5.12.3 논리 연산 : |
, &
, !
, ||
, &&
논리 연산자는 논리형 벡터의 논리 연산(AND, OR, NOT 등)에 사용됩니다.
숫자형 벡터의 경우 값이 0
인 경우는 FALSE
, 그 이외에는 TRUE
가 됩니다.
<- c(TRUE, TRUE, FALSE, FALSE); x x
## [1] TRUE TRUE FALSE FALSE
<- c(TRUE, FALSE, TRUE, FALSE); y y
## [1] TRUE FALSE TRUE FALSE
# 논리합 연산 : | # 양쪽의 값이 모두 `FALSE`인 경우에만 `FALSE`. 그 이외에는 `TRUE`입니다.
| y x
## [1] TRUE TRUE TRUE FALSE
# 논리곱 연산 : &
& y x
## [1] TRUE FALSE FALSE FALSE
# 논리부정 연산 : !
!x
## [1] FALSE FALSE TRUE TRUE
!y
## [1] FALSE TRUE FALSE TRUE
# 논리합 연산 : ||
|| y x
## [1] TRUE
# 논리곱 연산 : &&
&& y x
## [1] TRUE
# 논리연산 함수의 예
isTRUE(y)
## [1] FALSE
# 요소의 갯수가 일치하지 않는 경우
<- c(TRUE, FALSE, FALSE)
z | y # z 변수의 네 번쨰 요소가 TRUE로 자동채움되어 연산이 되며, 경고메시지를 출력합니다. z
## Warning in z | y: 두 객체의 길이가 서로 배수관계에 있지 않습니다
## [1] TRUE FALSE TRUE TRUE
제2부 제1장 연산자 부분도 참고하기 바랍니다.↩︎