R 에서 파이프 오퍼레이터 %>% 사용하는 법
개요
R 에서 %>%
은 파이프 연산자pipe Operater 로써, 다른 연산자가 모두 그러하듯 이항연산을 한다. 파이프 연산자는 이름 그대로 어떤 값들이 파이프를 통과하는 것처럼 함수와 함수들을 타고다닐 수 있게 해준다. 백마디 말보다 다음의 예시가 더 도움이 될 것이다.
예시
위의 예시는 $1$ 부터 $10$ 까지의 제곱근을 구하고 거기에 로그를 취한 뒤 그 중에서 중위수를 구하는 코드다. 아무 의미도 없는 계산이고 실제로 코드를 작성하는 게 어려운 건 아니지만, 이런식의 표현을 자주 사용하고 있다면 코드의 가독성은 크게 나빠져있을 가능성이 높다.
R 은 데이터 핸들링에 있어서 너무나 편리한 나머지 대충 코드를 써도 상상하던 결과가 나오는데, 메모리를 낭비하는 걸 좋아하는 코더는 없기 때문에 무의식적으로 수많은 괄호가 중첩되는 코드를 쓰게 된다. 그러나 파이프를 사용하면 마치 말하는 것과 같이 자연스러운 코드라이팅이 가능하다.
가령 팩터를 뉴메릭으로 바꾸는 기교를 생각해보면, 파이프를 통해 가능한 인간의 사고와 비슷하게 코드를 짤 수 있다. 위 스크린샷은 아주 간단하지만, 실제 데이터 분석에서 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