해당 포스트는 R 연산자 종류 및 사용법 - 고급편을 소개합니다.
Lists
[R] 연산자(Operator) 종류 및 사용법 - 기초편
[R] 연산자(Operator) 종류 및 사용법 - 초급편
[R] 연산자(Operator) 종류 및 사용법 - 중급편
[R] 연산자(Operator) 종류 및 사용법 - 고급편
INTRO
R을 사용하면서 프로그래밍 스킬도 중요하지만 함수 및 연산자에 대한 이해만 가지더라도 효율적인 R활용이 가능합니다. 이번 포스트에서는 R에서 기본적으로 제공하는 연산자들을 소개하고 예시와 함께 사용법을 설명합니다.
참고로 이번에 설명하는 연산자들은 magrittr 패키지에서 제공되는 연산자들입니다.
1. +
, %+replace%
R에서 +
연산자는 기본적으로 두 수의 합을 계산하지만, ggplot2 패키지에서는 layer들을 중첩하여 쌓을 수 있도록 도와주는 역할을 합니다.예를 들어, ggplot2에서 e1 + e2
의 문법은 e2
속성값들 중 e1
과 겹치는 속성값들을 e2
속성값으로 변경하게 되며, 그 뒤에 +
연산자로 layer를 추가한다면 반복적으로 설정값들이 갱신된다고 생각하면 됩니다. (layer 들을 overlap 하여 쌓는데 '겹치는 부분은 교체한다' 고 생각하시면 될 것 같습니다.)
참고 : ggplot2 철학 이해하기
ggplot2에서는 %+replace%
함수를 추가로 제공하고 있습니다. 해당 함수는 일반적인 ggplot2 문법(e1 + e2
)과 동일하게 사용하며, 우측에 있는 e2
에 속하지 않는 속성들은 다 NULL
로 reset 해 주기에, custom theme 설정시 초기화가 필요한 경우에 많이 사용합니다.
아래 코드는 theme_grey()
설정 후 'Times' 폰트(family)를 설정하는 코드입니다. %+replace%
연산자를 사용한 코드에서는 폰트(family)를 제외한 타 속성값들이 NULL
로 초기화 된 것을 볼 수 있습니다.
library(ggplot2)
add_el <- theme_grey() +
theme(text = element_text(family ='Times'))
add_el$text
List of 11 $ family : chr "Times" $ face : chr "plain" $ colour : chr "black" $ size : num 11 $ hjust : num 0.5 $ vjust : num 0.5 $ angle : num 0 $ lineheight : num 0.9 $ margin : 'margin' num [1:4] 0points 0points 0points 0points ..- attr(*, "unit")= int 8 $ debug : logi FALSE $ inherit.blank: logi FALSE - attr(*, "class")= chr [1:2] "element_text" "element"
rep_el <- theme_grey() %+replace%
theme(text = element_text(family ='Times'))
rep_el$text
List of 11 $ family : chr "Times" $ face : NULL $ colour : NULL $ size : NULL $ hjust : NULL $ vjust : NULL $ angle : NULL $ lineheight : NULL $ margin : NULL $ debug : NULL $ inherit.blank: logi FALSE - attr(*, "class")= chr [1:2] "element_text" "element"
2. %<-%
파이썬(Python)에서는 a, b, c = x, y, z
형태의 입력이 가능하기에 여러 변수를 한 라인에서 정의할 수 있습니다. R에서는 zeallot 패키지의 %<-%
연산자를 이용하여 해당 문법을 사용할 수 있습니다.
library(zeallot)
mylist <- list(x = 3, y = 4)
c(a, b) %<-% mylist
a; b;
[1] 3 [1] 4
3. <<-
<<-
연산자는 assign 연산자로 전역 변수를 설정할 때 사용합니다. 아래 예시에서는 기 정의된 변수 x
와 함수 안에서 재정의된 지역 변수 x
를 비교하며, 함수 내 전역 변수 할당 시 함수 안(local)의 x
는 변경되지 않았지만 기 정의되었던 x
는 변경된 것을 볼 수 있습니다.
x <- 3
myf <- function(){
x <- 3
x <<- 2
y <- x * 2
return(y)
}
myf()
[1] 6
x
[1] 2
4. :::
R에서 특정 패키지의 함수를 사용하려는 경우, 패키지명::함수명
의 형태로 사용합니다. 이러한 사용법은 패키지에서 공식적으로 제공하는 함수(public function)에 해당하며, 만약 내부 연산을 위해 생성된 함수(private function)를 사용하려는 경우에는 콜론(:
) 3개를 사용하여 함수명을 사용(패키지명:::함수명
)하면 됩니다.
5. 사용자 연산자
사용자 함수와 같이 연산자(Operator)도 개인이 생성 및 사용할 수 있습니다. 아래 예시는 파이썬에서 +
연산자로 텍스트를 이어붙이는 기능을 사용자 연산자(%+%
)로 구현하는 예시입니다.
'%+%' <- function(a, b){
paste(a, b)
}
"my" %+% "first" %+% "operator"
[1] "my first operator"
관련 링크
[1] 슬기로운통계생활 Youtube - 이거 외계어 아니야? R 연산자 (operator) 부시기! 고급편!
[2] [R] 연산자(Operator) 종류 및 사용법 - 기초편
[3] [R] 연산자(Operator) 종류 및 사용법 - 초급편
[4] [R] 연산자(Operator) 종류 및 사용법 - 중급편
[5] [R] 연산자(Operator) 종류 및 사용법 - 고급편