[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%
등이 있습니다.
- 파이프 오퍼레이터의 만능주의를 경계하기 바랍니다. 분석단계가 20단계라고 가정할 때 19번의 파이프 오퍼레이터를 사용하는 것은 불가능하지 않아도 무조건 바람직하다고 볼 수는 없습니다.
반응형
'tidyverse' 카테고리의 다른 글
[R] 6. 날짜 및 시간 변수 (lubridate) (3) | 2021.07.05 |
---|---|
[R] 5. mutate() (0) | 2021.07.05 |
[R] 4. select(), filter(), group_by(), summarise(), arrange(), rename() (0) | 2021.07.05 |
[R] 2. tibble 데이터 (0) | 2021.07.05 |
[R] 1. tidyverse 라이브러리와 tidy data (0) | 2021.07.05 |
TAGS.