[解決済み] Rの%>%関数の意味は何ですか?
質問
を使用しているのを見たことがあります。
%>%
(パーセントより大きいパーセント)関数は、いくつかのパッケージでは
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の
%>%
は、右辺の第一引数にしか代入できません。 制限はありますが、構文変換によって動作するため、パフォーマンスへの影響はありません。
関連
-
[解決済み】エラー:ベクターメモリの枯渇(制限に達したか) R 3.5.0 macOS
-
[解決済み】library(ggplot2)でエラー:'ggplot2'というパッケージは存在しません。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] 関数呼び出しにおけるstarとdoublestarの演算子の意味は?
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"
-
[解決済み】Rのメモリ管理/サイズn Mbのベクトルを割り当てられない
-
[解決済み】bstTreeの予測値の混乱行列、エラー:'The data must contain some levels that overlap reference'.
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み] ヒートマップ作成時のエラー - 外部関数呼び出しでNA/NaN/Inf (arg 11)
-
[解決済み] テスト
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み] エラー: 関数 "%>%" が見つかりませんでした。
-
[解決済み] Rの%>%の意味 [重複]について