# 登録数
ls("package:magrittr") %>% length()
[1] 35
# 関数一覧
ls("package:magrittr") %>% print()
[1] "%$%" "%<>%"
[3] "%>%" "%T>%"
[5] "add" "and"
[7] "debug_fseq" "debug_pipe"
[9] "divide_by" "divide_by_int"
[11] "equals" "extract"
[13] "extract2" "freduce"
[15] "functions" "inset"
[17] "inset2" "is_greater_than"
[19] "is_in" "is_less_than"
[21] "is_weakly_greater_than" "is_weakly_less_than"
[23] "mod" "multiply_by"
[25] "multiply_by_matrix" "n'est pas"
[27] "not" "or"
[29] "raise_to_power" "set_colnames"
[31] "set_names" "set_rownames"
[33] "subtract" "undebug_fseq"
[35] "use_series"
# パイプでつなぐ
iris %>%
group_by(Species) %>%
tally()
## # A tibble: 3 × 2
## Species n
## <fctr> <int>
## 1 setosa 50
## 2 versicolor 50
## 3 virginica 50
iris %>%
group_by(Species) %T>%
plot() %>%
tally()
## # A tibble: 3 × 2
## Species n
## <fctr> <int>
## 1 setosa 50
## 2 versicolor 50
## 3 virginica 50
# 相関係数を求める
iris %$% cor(Sepal.Length, Sepal.Width)
## [1] -0.1175698
# 準備:データセットの作成
X <- iris %>% head(5) %T>% print()
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
# 元のデータセットの上書き
X %<>% head(3) %>% select(-Species)
X %>% print()
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# 列名を変更
X %>% set_colnames(c("COL_1", "COL_2"))
## # A tibble: 5 × 2
## COL_1 COL_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# 行名を変更
X %>% as.data.frame() %>% set_rownames(paste0("ROW_", 1:5))
## col_1 col_2
## ROW_1 1 11
## ROW_2 2 12
## ROW_3 3 13
## ROW_4 4 14
## ROW_5 5 15
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# 要素名の変更
X$col_1 %>% set_names(LETTERS[1:5])
## A B C D E
## 1 2 3 4 5
[
演算子と同様# ベクトルの要素を抽出
iris$Sepal.Length %>% magrittr::extract(1:10)
## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
# データフレームの要素を抽出
# --- 行指定
# --- extract(1:3, )とするとRstudioが警告を出す
iris %>% as_tibble() %>% magrittr::extract(1:3, )
## # A tibble: 3 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fctr>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
iris %>% as_tibble() %>% slice(1:3)
## # A tibble: 3 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fctr>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
# データフレームの要素を抽出
# --- 列指定
# --- extract(, 1:3)とするとRstudioが警告を出す
# --- extract(1:3)なら問題なし
iris %>% as_tibble() %>% magrittr::extract(1:3)
## # A tibble: 150 × 3
## Sepal.Length Sepal.Width Petal.Length
## <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4
## 2 4.9 3.0 1.4
## 3 4.7 3.2 1.3
## 4 4.6 3.1 1.5
## 5 5.0 3.6 1.4
## 6 5.4 3.9 1.7
## 7 4.6 3.4 1.4
## 8 5.0 3.4 1.5
## 9 4.4 2.9 1.4
## 10 4.9 3.1 1.5
## # ... with 140 more rows
# データフレームの要素を抽出
# --- 行列指定
iris %>% as_tibble() %>% magrittr::extract(1:3, 1:3)
## # A tibble: 3 × 3
## Sepal.Length Sepal.Width Petal.Length
## <dbl> <dbl> <dbl>
## 1 5.1 3.5 1.4
## 2 4.9 3.0 1.4
## 3 4.7 3.2 1.3
[[]]
演算子と同様# 準備1:リストの作成
# --- リスト要素はベクトル
X <- iris %$% list(Sepal.Length, Sepal.Width) %T>% print()
# 準備2:リストの作成
# --- リスト要素はデータフレーム
Y <- iris %$% list(Sepal.Length, Sepal.Width) %>% map(as_tibble) %T>% print()
# リストから要素抽出
# --- ベクトルで出力
X %>% extract2(1)
# リストから要素抽出
# --- データフレームで出力
Y %>% extract2(1)
# データフレームから抽出
# --- 複数列は指定できない
iris %>% magrittr::extract2("Species")
# 準備:リストの作成
X <- iris %>% map(list) %>% map(as_vector) %>% map(head, 10) %T>% print()
## $Sepal.Length
## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
##
## $Sepal.Width
## [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1
##
## $Petal.Length
## [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5
##
## $Petal.Width
## [1] 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1
##
## $Species
## [1] setosa setosa setosa setosa setosa setosa setosa setosa setosa setosa
## Levels: setosa versicolor virginica
# リストから要素を抽出
X %>% use_series(Sepal.Length)
## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9
# データフレームの列をベクトル形式で抽出
iris %>% use_series(Species)
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% add(1)
## col_1 col_2
## 1 2 12
## 2 3 13
## 3 4 14
## 4 5 15
## 5 6 16
# 参考:add関数を使わない場合
X %>% sapply(function(x) x + 1)
## col_1 col_2
## [1,] 2 12
## [2,] 3 13
## [3,] 4 14
## [4,] 5 15
## [5,] 6 16
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% subtract(1)
## col_1 col_2
## 1 0 10
## 2 1 11
## 3 2 12
## 4 3 13
## 5 4 14
# 参考:subtract関数を使わない場合
X %>% sapply(function(x) x - 1)
## col_1 col_2
## [1,] 0 10
## [2,] 1 11
## [3,] 2 12
## [4,] 3 13
## [5,] 4 14
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% multiply_by(10)
## col_1 col_2
## 1 10 110
## 2 20 120
## 3 30 130
## 4 40 140
## 5 50 150
# 参考:multiply_by関数を使わない場合
X %>% sapply(function(x) x * 10)
## col_1 col_2
## [1,] 10 110
## [2,] 20 120
## [3,] 30 130
## [4,] 40 140
## [5,] 50 150
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% divide_by(2)
## col_1 col_2
## 1 0.5 5.5
## 2 1.0 6.0
## 3 1.5 6.5
## 4 2.0 7.0
## 5 2.5 7.5
# 参考:divide_by関数を使わない場合
X %>% sapply(function(x) x / 2)
## col_1 col_2
## [1,] 0.5 5.5
## [2,] 1.0 6.0
## [3,] 1.5 6.5
## [4,] 2.0 7.0
## [5,] 2.5 7.5
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% divide_by_int(2)
## col_1 col_2
## 1 0 5
## 2 1 6
## 3 1 6
## 4 2 7
## 5 2 7
# 参考:divide_by関数を使わない場合
X %>% sapply(function(x) floor(x / 2))
## col_1 col_2
## [1,] 0 5
## [2,] 1 6
## [3,] 1 6
## [4,] 2 7
## [5,] 2 7
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% mod(2)
## col_1 col_2
## 1 1 1
## 2 0 0
## 3 1 1
## 4 0 0
## 5 1 1
# 参考:divide_by関数を使わない場合
X %>% sapply(function(x) x %% 2)
## col_1 col_2
## [1,] 1 1
## [2,] 0 0
## [3,] 1 1
## [4,] 0 0
## [5,] 1 1
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
# パイプライクに記述
X %>% raise_to_power(2)
## col_1 col_2
## [1,] 1 121
## [2,] 4 144
## [3,] 9 169
## [4,] 16 196
## [5,] 25 225
# 参考:divide_by関数を使わない場合
X %>% sapply(function(x) x ^ 2)
## col_1 col_2
## [1,] 1 121
## [2,] 4 144
## [3,] 9 169
## [4,] 16 196
## [5,] 25 225
# 準備:データセットの作成
X <- tibble(col_1 = 1:5,
col_2 = 11:15) %>% print()
## # A tibble: 5 × 2
## col_1 col_2
## <int> <int>
## 1 1 11
## 2 2 12
## 3 3 13
## 4 4 14
## 5 5 15
1:10 %>% freduce(list(f = sum))
## [1] 55
# 準備:データセットの作成
X <- c(1, 2, 3)
Y <- c(1, 2, 4)
# イコールかどうかを判定
X %>% equals(Y)
## [1] TRUE TRUE FALSE
# 参考:equal関数を使わない場合
X %>% {
a <- function(x) x == Y
a(.)
}
## [1] TRUE TRUE FALSE
>
演算子と同様# 準備:データセットの作成
X <- c(1, 3, 4)
Y <- c(1, 2, 5)
# イコールかどうかを判定
X %>% is_greater_than(Y)
## [1] FALSE TRUE FALSE
<
演算子と同様# 準備:データセットの作成
X <- c(1, 3, 4)
Y <- c(1, 2, 5)
# イコールかどうかを判定
X %>% is_less_than(Y)
## [1] FALSE FALSE TRUE
>=
演算子と同様# 準備:データセットの作成
X <- c(1, 3, 4)
Y <- c(1, 2, 5)
# イコールかどうかを判定
X %>% is_weakly_greater_than(Y)
## [1] TRUE TRUE FALSE
<=
演算子と同様# 準備:データセットの作成
X <- c(1, 3, 4)
Y <- c(1, 2, 5)
# イコールかどうかを判定
X %>% is_weakly_less_than(Y)
## [1] TRUE FALSE TRUE
# 準備:データセットの作成
X <- c(1, 2, 3)
Y <- c(1, 2, 4)
# イコールかどうかを判定
X %>% is_in(Y)
## [1] TRUE TRUE FALSE