1. ホーム
  2. r

[解決済み] Rの%>%関数の意味は何ですか?

2022-03-01 22:07:49

質問

を使用しているのを見たことがあります。 %>% (パーセントより大きいパーセント)関数は、いくつかのパッケージでは dplyr 収穫 . これはどういう意味ですか?Rでクロージャブロックを書くための方法ですか?

どのように解決するのですか?

演算子 %...%

%>% は組み込みの意味を持ちませんが、ユーザ (またはパッケージ) は以下の形式の演算子を自由に定義することができます。 %whatever% を好きなように使ってください。 例えば、この関数は、左の引数にカンマとスペースを入れ、右の引数からなる文字列を返す。

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

# test run

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

Rのベースは、以下のものを提供します。 %*% (行列の多重化)。 %/% (整数の除算)。 %in% (lhsはrhsの成分か?)。 %o% (外積)と %x% (クロネッカー積)である。 を使用するかは不明である。 %% が該当するかどうかですが、モジュロを表しています。

エクスパム R パッケージの expm は、行列のべき乗演算子を定義しています。 %^% . 例として、以下をご覧ください。 Rの行列パワー .

演算子 R の operators パッケージには、次のような演算子が多数定義されています。 %!in% (notの場合 %in% ). 参照 http://cran.r-project.org/web/packages/operators/operators.pdf

アイグラフ 本パッケージでは、エッジを選択するための %--%, %->%, %<-% を定義しています。

ルブライト 本パッケージでは、月の加算・減算を行う %m+% と %m-% 、区間を定義する %--% を定義しています。

パイプ

マグリットル の場合 %>% は、magrittr R パッケージが magrittr vignette で説明されているように定義しています。 参照 http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html

magittrは、このような演算子も数多く定義しています。 先のリンクのAdditional Pipe Operatorsセクションを参照してください。 %T>% , %<>%%$% そして http://cran.r-project.org/web/packages/magrittr/magrittr.pdf をご覧ください。

dplyr を定義するために使用される dplyr R パッケージ。 %.% 演算子と似ていますが、非推奨となり、現在は %>% これは、dplyrがmagrittrからインポートしてdplyrユーザが利用できるようにしたものです。 David Arenburgがコメントで述べているように、このSOの質問では、magrittrの %>% : .% (dplyr) と %>% (magrittr) の違いについて

パイプR RパッケージのpipeRでは %>>% 演算子は、magrittr の %>% に似ていて、その代替として使うことができます。 参照 http://renkun.me/pipeR-tutorial/

pipeRパッケージでは、このような演算子も数多く定義されています。 参照してください。 http://cran.r-project.org/web/packages/pipeR/pipeR.pdf

ポストロジック postlogic パッケージで定義されている %if%%unless% 演算子を使用します。

ラップ 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 パッケージを追加しました。

アップデート2 Rの開発版では |> パイプを使用します。 magrittrの %>% は、右辺の第一引数にしか代入できません。 制限はありますが、構文変換によって動作するため、パフォーマンスへの影響はありません。