# A tibble: 4 × 3
cyl n mean_cty
<int> <int> <dbl>
1 4 81 21.0
2 5 4 20.5
3 6 79 16.2
4 8 70 12.6
8 R 파이프 연산자(pipe)
프로그래밍 언어에서 파이프(pipe)는 앞선 함수의 결과를 바로 받아서 사용할 수 있게 하여, 중간 임시 변수들을 만들지 않고 함수 등을 연결하여, 마치 문장을 연결하듯이 코딩할 수 있게 해 주는 기능을 말한다.
예를 들어 다음과 같은 코드를 보자. data
라는 데이터프레임이 있다고 가정하자. 이것을 여러 함수를 거치면서 그 내용을 result1
, result2
, result3
라는 임시 변수에 저장하고, 마지막에 result4
를 출력한다고 하자. 이렇게 하면 중간 변수를 만들어야 하고, 가독성도 떨어진다.
<- function1(data)
result1 <- function2(result1)
result2 <- function3(result2)
result3 <- function4(result3)
result4 # 최종 결과 result4
만약 R 네이티브(native) 파이프 연산자 |>
를 사용하면 다음과 같이 쓸 수 있어서 좋고, 코드를 이해하기도 편하다.
<- data |>
result function1() |>
function2() |>
function3() |>
function4()
여기서 네이트브(native)라고 하는 것을 R 언어의 핵심에 내재되어 있음을 의미한다. 따라서 별도의 외부 패키지를 사용하지 않아도 사용할 수 있다.
그런데 R 네이티브 파이프 |>
는 R 4.1.0 버전부터 지원되기 시작했다. 그 이전 버전에서는 magrittr
패키지의 %>%
연산자를 사용하여 이 기능을 이용했다. 이 둘의 차이도 정리해 두려고 한다.
8.1 파이프 연산자의 사용
R 4.1.0 버전부터 지원되는 네이티브 파이프 연산자 |>
는 다음과 같이 사용한다.
magrittr
패키지의 %>%
연산자도 같은 방법으로 사용한다.
8.2 네이티브 파이프와 magrittr 파이프의 차이점
네이티브 파이프와 magrittr
파이프는 사용법은 비슷한데 약간의 차이가 있다. 대표적인 차이점은 “넘어온 그것”을 표현하는 문법이다.
- 네이티브 파이프
|>
은_
를 사용하여 “넘어온 그것”을 표현한다. -
magrittr
파이프%>%
는.
을 사용하여 “넘어온 그것”을 표현한다.
네이티브 파이프와 플레이스홀더 _
를 사용한 예이다.
mtcars |> lm(mpg ~ wt, data = _)
Call:
lm(formula = mpg ~ wt, data = mtcars)
Coefficients:
(Intercept) wt
37.285 -5.344
magrittr
파이프와 플레이스홀더 .
을 사용한 예이다. magrittr
패키지는 dplyr
패키지에서 상당히 많이 사용되어 왔기 때문에 이것을 사용하는 예시를 인터넷 등에서 많이 볼 수 있을 것이다.
8.3 정리
- 네이티브 파이프:
|>
과_
-
magrittr
파이프:%>%
과.
파이프에 대한 도움말은 다음과 같이 실행하여 볼 수 있다.
?`|>`
?`%>%`
+
, [
, |>
등과 같은 특수한 기호 등에 대한 도움말 확인
위와 같이 ?
를 쓰고 관련 내용을 백틱에 쓰면 된다. 백틱은 보통 키보드에서 숫자 1 앞에서 키가 있다.