배관공과 체인, 그리고 유명 화가: R 파이프 연산자의 역사

Plumbers, chains, and famous painters: The history of the pipe operator in R

adolfoalvarez.cl ▲ 54 댓글 3 sinnsro

요약

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라는 이름이 어디서 왔는지 이제야 알았다며 반기는 반응이 나왔습니다.
  • 한 이용자는 지금의 기본 파이프가 이름 붙은 인수에 한해 밑줄(_)을 자리 표시자로 받아 함수로 감쌀 필요가 없다고 보충했습니다.

댓글

3개 표시 · 전체 3개
  1. MostlyStable HN

    magrittr 패키지 이름이 늘 궁금하긴 했는데, 직접 찾아볼 만큼은 아니었거든요. 유래가 꽤 멋지네요.

  2. wwfn HN

    \(x) 같은 함수 감싸기가 필요 없다는 걸 얼마 전에야 알았습니다. magrittr의 %>%는 .을 쓰는데, 기본 R의 |>는 _를 쓸 수 있습니다. 다만 이름을 붙인 인자에만 가능합니다.

         penguins |>
          rpart::rpart(species ~ ., method = "class", data = _) |>
          rpart.plot::prp(extra = 4)
    

    수정: 블로그 글이 쓰인 2021년에는 이렇지 않았을 수도 있겠네요.

  3. fithisux HN

    이런 글을 보니 반갑네요.

Hacker News에서 보기 ↗