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

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



답변

% … % 연산자

%>%내장 된 의미는 없지만 사용자 (또는 패키지)는 %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 패키지를 추가했습니다.


답변

G.Grothendieck에서 제공 하는 링크를 읽은 후 나의 이해 는 %> %가 함수를 파이프하는 연산자라는 것입니다. 여러 함수가 중첩 될 때 뒤로 이동하는 것보다 이러한 파이프를 통해 여러 함수의 흐름을 따르는 것이 더 쉽기 때문에 가독성과 생산성에 도움이됩니다.


답변

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

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

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

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


답변

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

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

?'%>%'

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

library(sf)

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


답변