요약
R의 파이프 연산자는 2012년 스택 오버플로 질문에서 시작해 9년 만에 R 기본 문법이 됐습니다.
R 사용자 아돌포 알바레스가 2014년에 쓴 글을 R 4.1.0 출시에 맞춰 2021년에 고친 글입니다. 함수 호출을 왼쪽에서 오른쪽으로 이어 쓰게 해 주는 파이프가 어떤 패키지와 사람을 거쳤는지 날짜순으로 따라갑니다.
왜 중요한가
- 안쪽부터 거꾸로 읽어야 하던 중첩 함수 호출이 위에서 아래로 읽히게 되면서 R 코드를 쓰는 방식이 바뀌었습니다.
- 외부 패키지에서 시작한 문법이 사용자 사이에 퍼진 끝에 언어 본체로 들어간 과정을 보여 줍니다.
- 기본 파이프
|>와 magrittr의%>%는 동작이 달라서 둘을 함께 쓰는 사람은 차이를 알아야 합니다.
핵심 내용
- 2012년 1월 한 익명 사용자가 F#의
|>를 R에서 쓰는 법을 묻자 벤 볼커가 같은 날 첫%>%함수를 답으로 올렸습니다. - 2013년 12월 스테판 바케가 만든 plumbr(배관공) 패키지는 이틀 뒤 르네 마그리트의 이름을 딴 magrittr로 바뀌었습니다.
- dplyr는 자체 연산자
%.%를 쓰다가 2014년 4월 시프트 키를 누른 채 치기 쉬운 magrittr의%>%로 갈아탔습니다. - 리오넬 앙리와 짐 헤스터의 구상을 바탕으로 만든 기본 파이프
|>는 2021년 5월 R 4.1.0에 정식으로 들어갔습니다. - 기본 파이프는 함수 이름 뒤 괄호를 생략할 수 없고, 점(.)으로 앞의 값을 원하는 인수 자리에 넣을 수도 없습니다.
HN 반응
- 댓글은 세 개뿐이었고, magrittr라는 이름이 어디서 왔는지 이제야 알았다며 반기는 반응이 나왔습니다.
- 한 이용자는 지금의 기본 파이프가 이름 붙은 인수에 한해 밑줄(_)을 자리 표시자로 받아 함수로 감쌀 필요가 없다고 보충했습니다.
magrittr 패키지 이름이 늘 궁금하긴 했는데, 직접 찾아볼 만큼은 아니었거든요. 유래가 꽤 멋지네요.
\(x)같은 함수 감싸기가 필요 없다는 걸 얼마 전에야 알았습니다. magrittr의%>%는.을 쓰는데, 기본 R의|>는_를 쓸 수 있습니다. 다만 이름을 붙인 인자에만 가능합니다.수정: 블로그 글이 쓰인 2021년에는 이렇지 않았을 수도 있겠네요.
이런 글을 보니 반갑네요.