R에서 제공하는 산술연산자 (더하기,곱하기,행렬곱 등)
R에서 제공하는 산술연산자입니다.
+ 더하기
- 빼기
* 곱하기
/ 나누기
^ (또는 **) 지수 승
%% 나머지
%/% 나누기의 몫을 반환
%*% 행렬의 곱셈
사칙연산은 잘 알고 있으니, 나머지 연산자들만 예시로 알아봅시다.
나머지 연산자는 연산자 앞에 있는 수를 뒤에 있는 수로 나눈 나머지를 반환해줍니다 .
> 12%%5
[1] 2
%/% 연산자는 나누기 결과에서 몫만 반환합니다.
> 17/4
[1] 4.25
> 17%/%4
[1] 4
행렬의 곱셈을 해봅시다. 먼저 곱셈연산자 *를 사용해봅시다.
> mat1=matrix(c(1,2,3,4),nrow=2)
> mat1
[,1] [,2]
[1,] 1 3
[2,] 2 4
> mat2=matrix(c(1,2,3,4),nrow=2)
> mat2
[,1] [,2]
[1,] 1 3
[2,] 2 4
> mat1*mat2
[,1] [,2]
[1,] 1 9
[2,] 4 16
행렬의 같은 위치에 있는 원소끼리 곱해서 반환합니다. 매트랩의 .* 연산자의 역할입니다.
이번에는 행렬의 곱셈을 정의해봅시다. %*% 연산자를 사용합니다.
> mat1%*%mat2
[,1] [,2]
[1,] 7 15
[2,] 10 22
데이터프레임끼리도 산술연산이 가능할까요? 먼저 데이터프레임 두개를 정의합시다.
d1=data.frame(c(1,2,3),c(10,20,30))
d2=data.frame(c(4,5,6),c(40,50,60))
names(d1)=c("c1","c2")
names(d2)=c("c1","c2")
> d1
c1 c2
1 1 10
2 2 20
3 3 30
> d2
c1 c2
1 4 40
2 5 50
3 6 60
연산을 해봅시다.
> d1+d2
c1 c2
1 5 50
2 7 70
3 9 90
> d1*d2
c1 c2
1 4 400
2 10 1000
3 18 1800
연산이 가능합니다. 단, 데이터프레임의 크기가 다른 경우 연산이 불가능합니다.
리스트도 산술연산이 가능할까요? 리스트 두개를 정의합시다.
l1=list(a=c(1,2,3),b=c(4,5,6))
l2=list(c=c(1,2,3),d=c(4,5,6))
> l1
$`a`
[1] 1 2 3
$b
[1] 4 5 6
> l2
$`c`
[1] 1 2 3
$d
[1] 4 5 6
연산을 해봅시다.
> l1+l2
Error in l1 + l2 : non-numeric argument to binary operator
list 끼리는 연산이 불가합니다.
'6. 연산자 > 1) 산술 연산자' 카테고리의 다른 글
[R] 벡터를 벡터로 거듭제곱하기 (0) | 2020.11.30 |
---|---|
[R] 벡터와 스칼라의 사칙연산 (덧셈,곱셈,뺄셈,나눗셈) (0) | 2020.11.30 |
[R] 벡터와 벡터의 사칙연산 (덧셈,곱셈,뺄셈,나눗셈) (0) | 2020.11.30 |
댓글