パイプ処理用パッケージmagrittr。tidyverseの処理をパイプライン化して見やすくできる。 中毒性あり(あらゆるパイプにしたくなる等)なので要注意。
install.packages("magrittr")
%>%
UNIXのパイプ|
と同様の機能。以下の2文はそれぞれ同じ意味になる。
(ほとんどがPackage `magittr’よりにある例)
x %>% f(y) # パイプで渡された変数が,第一引数になる
f(x,y)
y%>%f(x,.) # .で渡す場所をしていできる
f(x,y)
z%>%f(x,y,arg=.)
f(x,y,z)
いろいろな利用例
rnorm(100) %>% {c(min(.), mean(.), max(.))} %>% floor
y <- x %>% f() # y<-f(x) と同じ
無名関数を定義して使うこともできる。
data %>% {
group_by(.)
summary(.)
}
下は,上の例と同様
data %>% (function(x)){
group_by(x)
summary(x)
})
data <- df1 + df2 %>% as_tibble() # df2のみがパイプ処理される
data <- (df1 + df2) %>% as_tibble() # df1+df2の結果がパイプ処理される
df <- df1+df2
colnames(df) <- c("name1","name2")
上をひとつのパイプ処理にする。
df <- (df1+df2) %>%
`colnames<-`(c("name1","name2"))
%<>%
library(magrittr)
以下はどれも同じ意味
x %<>% f()
x <- x %>% f()
x <- f(x)
%T>%
library(magrittr)
以下のようにf,gで順次処理する途中経過の表示をしたいときに使う。plot()に渡すこともできる。
data %>% f() %T>% print() %>% g()
もし上の例で%T>%
の代わりに%>%
を使うと print()
の出力がg()
に渡されて,おかしなことになる。
%$%
データフレームの変数にアクセスする。
data %$% ggplot(data=., aex(x=time,y=temperature))+geom_point()
tibbleの要素全部をまとめて2倍(multiply_by()
)するとか1を引く(subtract()
)とかといった処理のための関数がいろいろある。
一覧は以下で見れる。
ls("package:magrittr") %>% print()
[1] "%<>%" "%>%" "%$%"
[4] "%T>%" "add" "and"
[7] "debug_fseq" "debug_pipe" "divide_by"
[10] "divide_by_int" "equals" "extract"
[13] "extract2" "freduce" "functions"
[16] "inset" "inset2" "is_greater_than"
[19] "is_in" "is_less_than" "is_weakly_greater_than"
[22] "is_weakly_less_than" "mod" "multiply_by"
[25] "multiply_by_matrix" "n'est pas" "not"
[28] "or" "raise_to_power" "set_colnames"
[31] "set_names" "set_rownames" "subtract"
[34] "undebug_fseq" "use_series"