スコープ付き関数

概要

dplyrパッケージのスコープ付き関数は、元となる関数を簡潔なコードで記述できる関数です。

関連ページ

関数

******_all(.tbl, .funs, ...)
******_at(.tbl, .vars, .funs, ...)
******_if(.tbl, .predicate, .funs, ...)
引数指定説明
.tbl必須データフレーム
.funs元となる関数に応じて用途が変化する引数
.vars必須******_at()で使用する引数
対象となる列を変数または文字列で指定する
.predicate必須******_if()で使用する引数
対象となる列を返り値がBool型の関数で指定する

使い方

解説用データフレーム

df <- tibble(
  x1 = c('A', 'B', 'C'),
  x2 = c(1, 2, 3),
)
> df
# A tibble: 3 x 2
  x1       x2
  <chr> <dbl>
1 A         1
2 B         2
3 C         3

1.全ての列を処理する

全ての列に同じ処理を行いたい場合は******_all()を使用します。
以下のコードは、select_all()を用いて全ての列名を変更する例です。

# 'x'を'y'に置き換える関数
x2y <- function(str) str_replace(str, 'x', 'y')

# 全ての列を取得して、列名の'x'を'y'に置き換える
select_all(df, .funs = x2y)
# A tibble: 3 x 2
  y1       y2
  <chr> <dbl>
1 A         1
2 B         2
3 C         3

2.特定の列を処理する

2-1.変数または文字列で指定する

変数または文字列で指定した列に同じ処理を行いたい場合は******_at()を使用します。
以下のコードは、select_at()を用いて特定の列名を変更する例です。

# 列x1を取得して、列名の'x'を'y'に置き換える
select_at(df, .vars = c('x1'), .funs = x2y)
# A tibble: 3 x 1
  y1
  <chr>
1 A
2 B
3 C

2-2.関数で指定する

関数で指定した列に同じ処理を行いたい場合は******_if()を使用します。
以下のコードは、select_if()を用いて特定の列名を変更する例です。

# 数値型の列を取得して、列名の'x'を'y'に置き換える
select_if(df, .predicate = is.numeric, .funs = x2y)
# A tibble: 3 x 1
     y2
  <dbl>
1     1
2     2
3     3
Sponsored Link