R 에서 파이프 오퍼레이터 %>% 사용하는 법

R 에서 파이프 오퍼레이터 %>% 사용하는 법

개요

R 에서 %>%파이프 연산자Pipe Operater 로써, 다른 연산자가 모두 그러하듯 이항연산을 한다. 파이프 연산자는 이름 그대로 어떤 값들이 파이프를 통과하는 것처럼 함수와 함수들을 타고다닐 수 있게 해준다. 백마디 말보다 다음의 예시가 더 도움이 될 것이다.

예시

20190805\_163044.png

위의 예시는 $1$ 부터 $10$ 까지의 제곱근을 구하고 거기에 로그를 취한 뒤 그 중에서 중위수를 구하는 코드다. 아무 의미도 없는 계산이고 실제로 코드를 작성하는 게 어려운 건 아니지만, 이런식의 표현을 자주 사용하고 있다면 코드의 가독성은 크게 나빠져있을 가능성이 높다.

R 은 데이터 핸들링에 있어서 너무나 편리한 나머지 대충 코드를 써도 상상하던 결과가 나오는데, 메모리를 낭비하는 걸 좋아하는 코더는 없기 때문에 무의식적으로 수많은 괄호가 중첩되는 코드를 쓰게 된다. 그러나 파이프를 사용하면 마치 말하는 것과 같이 자연스러운 코드라이팅이 가능하다.

20190805\_162550.png 가령 팩터를 뉴메릭으로 바꾸는 기교를 생각해보면, 파이프를 통해 가능한 인간의 사고와 비슷하게 코드를 짤 수 있다. 위 스크린샷은 아주 간단하지만, 실제 데이터 분석에서 x의 모양, 취급이 복잡해질수록 파이프의 가독성이 높아진다.

코드

median(log(sqrt(1:10)))
1:10 %>% sqrt %>% log %>% median
 
x <- factor(c("3", "1", "2", "2", "1", "1", "5")); x
y1 <- as.numeric(as.character(x)); y1
y2 <- x %>% as.character%>% as.numeric; y2
댓글