[R] 3. 파이프 오퍼레이터 (%>%)

반응형

파이프 오퍼레이터(Pipe Operator, %>%)

  • 파이프 오퍼레이터 %>%tidyverse 라이브러리를 사용하여 작성된 R 코드를 조금 더 쉽고 단순화 및 가독성 있게 만들어주는데 도움을 줍니다.
  • 일단 tidyverse 라이브러리를 많이 이용하게 될 것이라면 파이프 오퍼레이터에 익숙해질 필요가 있습니다.
  • 아래 예시를 들어 설명하겠습니다.
temp
## # A tibble: 5 x 2
##   name   score
##   <chr>  <int>
## 1 Ray        5
## 2 Dylan      4
## 3 Samuel     3
## 4 Rin        2
## 5 Jade       1

 

  • filter() 함수는 특정 조건을 만족하는 값을 출력(where in SQL)해주는 함수인데 이를 %>%와 곁들이면 아래와 같습니다.
temp %>% 
  filter(name == "Jade")
## # A tibble: 1 x 2
##   name  score
##   <chr> <int>
## 1 Jade      1

 

  • 위와 같은 방법을 전통적 방식으로 표현한다면? 대충 어떤 느낌인지 와닿으실겁니다.
temp[temp$name == "Jade", ]
## # A tibble: 1 x 2
##   name  score
##   <chr> <int>
## 1 Jade      1

 

  • 사실 위와 같은 단순한 코드만 보자면 별 차이가 아닌 것 같이 느껴지지만 
    코드가 길어지거나 가독성, 간결성을 고려하게 된다면 파이프 오퍼레이터를 사용하는 경우가 매우 탁월하다고 보여집니다.
  • 그러나 이러한 파이프 오퍼레이터를 사용할 때 아래와 같은 점들을 주의할 필요가 있습니다.

 

  • tidyverse approach에서 파이프 오퍼레이터 사용 시 주의할 점으로 다음 세 가지를 언급하고 있습니다.
    (Wickham & Grolemund, 2017)
    • 파이프 오퍼레이터의 만능주의를 경계하기 바랍니다. 분석단계가 20단계라고 가정할 때 19번의 파이프 오퍼레이터를 사용하는 것은 불가능하지 않아도 무조건 바람직하다고 볼 수는 없습니다.
      파이프 오퍼레이터의 기능 중 하나는 프로그래밍의 단계가 쉽게 이해되도록 하는 것 입니다.
    • 파이프 오퍼레이터는 하나의 데이터 객체 내에서 작동합니다. 만약 데이터 객체가 여러 개라면 하나로 합친 데이터 객체를 생성한 후에 파이프 오퍼레이트를 사용하는 것이 바람직합니다.
    • 네트워크 데이터를 다룰 때 유방향성 그래프(direted graph)를 다룰 경우 파이프 오퍼레이터를 주의 깊게 사용하셔야만 합니다. 간단하게 설명하자면 네트워크 데이터에서 쓰이는 파이프 오퍼레이터는 %v%, %e% 등이 있습니다.
반응형
TAGS.

Comments