R언어에서의 연산은 여타 다른 언어의 연산과는 조금 다른 측면이 있다.
- 기본 연산
- 연산자
기본 연산
R언어는 간단하게 변수에 정수값을 할당하여도 vector 형식의 object로 관리한다.
> a = 1 > is.vector(a) [1] TRUE
가장 기본적인 object 형태라고 볼 수 있는데, R언어의 연산을 설명하기 위하여 vector 기반으로 설명하고자 한다.
간단한 예를 보면 다음과 같다.
> n1 = c(1,2,3,4,5,6,7,8,9) > n2 = c(1,2,3,4,5,6,7,8,9) > n1 + n2 [1] 2 4 6 8 10 12 14 16 18
좀 더 복잡한 예를 보면 다음과 같다.
> n1 = c(1,2,3,4,5,6,7,8,9) > n2 = c(1,2,3,4,5,6,7,8,9) > n1*2+n2+1 [1] 4 7 10 13 16 19 22 25 28
위의 예와 같이 같은 위치에 있는 항목끼리 계산을 하고 숫자의 경우 모든 항목을 대상으로 계산하게 된다.
계산하고자 하는 vector (혹은 또다른 형태의 object)의 크기가 같다면 별 다른 어려움없이 연산이 가능하다.
하지만 만약 크기가 다른 vector끼리 계산을 하게 되면 어떻게 될 것인가.
> a1 = c(1,2,3,4) > a2 = c(1,2) > a1 + a2 [1] 2 4 4 6
연산시 상대적으로 작은 vector가 반복되어 큰 vector의 크기에 맞춘다.
즉, 위의 예는 아래와 같이 볼 수도 있는 것이다.
> a1 = c(1,2,3,4) > a2 = c(1,2,1,2) > a1 + a2 [1] 2 4 4 6
같은 맥락으로 하나의 숫자와 vector를 더했을 경우 해당 숫자는 vector의 크기만큼 반복되어 계산되는 것이라 이해하면 된다.
> a1 = c(1,2,3,4) > a2 = 1 > a1 + a2 [1] 2 3 4 5
> a1 = c(1,2,3,4) > a2 = c(1,1,1,1) > a1 + a2 [1] 2 3 4 5
그렇다면 만약 큰 vector의 크기가 작은 vector 크기의 배수가 되지 않을 경우는 어떻게 될까.
아래의 예와 같이 계산이 되기는 하지만 warning이 발생하는 것을 확인할 수 있다.
> a1 = c(1,2,3,4) > a2 = c(1,2,3) > a1 + a2 [1] 2 4 6 5 Warning message: In a1 + a2 : longer object length is not a multiple of shorter object length
연산자
R언어에서 사용하는 기본적인 연산자는 '+, -, *, /, ^' 이다.
'+' : 덧셈 연산자
'-' : 뺄셈 연산자
'*' : 곱셈 연산자
'/' : 나눗셈 연산자
'^' : 제곱 연산자
각 연산자에 대한 예는 다음과 같다.
덧셈의 예)
> a1 = c(1,2,3,4) > a2 = c(1,2,3,4) > a1 + a2 [1] 2 4 6 8
> a1 = c(1,2,3,4) > a2 = c(1,2,3,4) > a1 - a2 [1] 0 0 0 0
> a1 = c(1,2,3,4) > a2 = c(1,2,3,4) > a1 * a2 [1] 1 4 9 16
> a1 = c(1,2,3,4) > a2 = c(1,2,3,4) > a1 / a2 [1] 1 1 1 1
> a1 = c(1,2,3,4) > a2 = c(1,2,3,4) > a1 ^ a2 [1] 1 4 27 256
'Language > R' 카테고리의 다른 글
[01-3] R언어 - 학습의 구성 (0) | 2017.12.05 |
---|---|
[03-5] R언어 - array 의 상세 (0) | 2017.11.24 |
[02-1] R언어 - Assignment (할당) (0) | 2017.11.10 |
[03-1] R언어 - Object의 정의 및 종류 (0) | 2017.11.10 |
[03-8] R언어 - Data frame 의 상세 (0) | 2017.11.09 |
[03-4] R언어 - matrix 의 상세 (0) | 2017.11.08 |
[03-3] R언어 - vector 의 상세 (0) | 2017.11.08 |
[03-2] R언어 - type와 mode 차이의 이해 (0) | 2017.11.07 |