R에서 %> % 함수는 무엇을 의미합니까?


119

나는의 사용 보았다 %>%같은 일부 패키지 (퍼센트 퍼센트 이상) 기능 dplyrrvest을 . 무슨 뜻인가요? R에서 클로저 블록을 작성하는 방법입니까?


10
또는보세요?'%>%'
jbaums 2014

6
감사합니다 David! jbaums, 불행히도 이것에 대한 문서가 없습니다. ? '%> %' "지정된 패키지 및 라이브러리에 '%> %'에 대한 문서가 없음"을
반환합니다.

6
@alf. 당신은 필요 library(magrittr)또는 library(dplyr)제 다음 실행 ?'%>%'내 링크가 더 informaiton을 제공하지만,
데이비드 Arenburg을


답변:


141

% ... % 연산자

%>%내장 된 의미는 없지만 사용자 (또는 패키지)는 %whatever%원하는 방식으로 양식의 연산자를 자유롭게 정의 할 수 있습니다. 예를 들어,이 함수는 왼쪽 인수와 쉼표, 공백, 오른쪽 인수로 구성된 문자열을 반환합니다.

"%,%" <- function(x, y) paste0(x, ", ", y)

# test run

"Hello" %,% "World"
## [1] "Hello, World"

R의 밑은 %*%(행렬 다중화), %/%(정수 나눗셈), %in%(lhs가 rhs의 구성 요소입니까?), %o%(외부 제품) 및 %x%(크로네 커 제품)을 제공합니다. %%이 범주에 속 하는지 여부 는 명확 하지 않지만 모듈로를 나타냅니다.

expm R 패키지 expm은 행렬 거듭 제곱 연산자를 정의합니다 %^%. 예를 보려면 R의 Matrix power 를 참조하십시오 .

연산자 연산자 R 패키지는 %!in%(for not %in%) 과 같은 많은 연산자를 정의했습니다 . http://cran.r-project.org/web/packages/operators/operators.pdf 참조

파이프

magrittr%>% magrittr R 패키지 의 경우 magrittr 비 네트에서 논의 된대로 정의했습니다. http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html 참조

magittr은 다른 많은 연산자도 정의했습니다. 설명 이전 링크의 추가 파이프 연산자 섹션을 참조하십시오 %T>%, %<>%%$%http://cran.r-project.org/web/packages/magrittr/magrittr.pdf를 더 자세한 내용은.

dplyr%.% 유사한 연산자 를 정의하는 데 사용되는 dplyr R 패키지 . 그러나 더 이상 사용되지 않으며 dplyr는 이제 사용자 %>%가 magrittr에서 가져온 dplyr을 사용하여 dplyr 사용자가 사용할 수 있도록 권장합니다. 데이비드 Arenburg이 코멘트에서 언급 한 바와 같이,이 SO 질문은과 magrittr의 차이점에 대해 설명 %>%: %의 차이 % (dplyr)와 %> % (magrittr을).

pipeR R 패키지 pipeR %>>%은 magrittr의 %> %와 유사한 연산자를 정의하며 그 대신 사용할 수 있습니다. http://renkun.me/pipeR-tutorial/ 참조

pipeR 패키지는 또한 다른 많은 연산자를 정의했습니다. 참조 : http://cran.r-project.org/web/packages/pipeR/pipeR.pdf

postlogic 정의 된 postlogic 패키지 %if%%unless%연산자.

wrapr R 패키지 인 wrapr 는 인수를 암시 적으로 삽입하지 않고 오른쪽에있는 점의 명시 적 사용 만 대체한다는 점에서 %.>%명시 적 버전 인 도트 파이프 를 정의합니다 %>%. 이것은에 대한 또 다른 대안으로 간주 될 수 있습니다 %>%. 참조 https://winvector.github.io/wrapr/articles/dot_pipe.html를

기괴한 파이프 . 이것은 실제로 파이프가 아니라 실제로 파이프를 사용하지 않고 파이프와 유사한 방식으로 작동하는 영리한 기본 구문입니다. 그것은 http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ 에서 논의됩니다 .

1:8 %>% sum %>% sqrt
## [1] 6

하나는 다음과 같이 씁니다. 이 경우 dot 인수를 제거하는 대신 dot을 명시 적으로 사용하고 이름이 dot ( .) 인 변수에 대한 할당으로 파이프 라인의 각 구성 요소를 종료합니다 . 세미콜론으로 이어집니다.

1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6

업데이트 expm 패키지에 대한 정보를 추가하고 맨 위에 간단한 예제를 추가했습니다. postlogic 패키지를 추가했습니다.


1
나는 또한 본다 : % <> %, % T> %, % $ %, 그들은 무엇을합니까? rpackages.ianhowson.com/cran/magrittr/man/pipe.html
pluke

magrittr을로드 한 후 R 내에서 다음을 사용하여 도움을 받으세요. ?"%<>%", 등
G. Grothendieck


9

%>%Unix의 파이프와 유사합니다. 예를 들어

a <- combined_data_set %>% group_by(Outlet_Identifier) %>% tally()

의 출력 combined_data_set이로 이동 group_by하고 출력이로 이동 tally한 다음 최종 출력이에 할당됩니다 a.

이렇게하면 변수를 생성하고 중간 값을 저장하지 않고도 함수를 직렬로 편리하고 쉽게 사용할 수 있습니다.


-1

R 패키지 dplyr 및 sf는 R 패키지 magrittr에서 %> % 연산자를 가져옵니다.

다음 명령을 사용하여 도움말을 사용할 수 있습니다.

?'%>%'

물론 패키지는 예를 사용하여 먼저로드해야합니다.

library(sf)

magrittr forward-pipe 연산자의 문서는 좋은 예를 제공합니다. 함수에 하나의 인수 만 필요한 경우 x %> % f는 f (x)와 같습니다.


1
이것은 이미 stackoverflow.com/a/27129032/570918에 잘 설명되어있는 것 같습니다 .
merv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.