본문 바로가기
6. 연산자/1) 산술 연산자

R에서 제공하는 산술연산자 (더하기,곱하기,행렬곱 등)

by makhimh 2020. 1. 20.
반응형

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 끼리는 연산이 불가합니다. 


반응형

댓글