Listの展開

概要

tidyrパッケージに含まれるunchop()は、List型の列を展開する関数です。逆操作を行うchop()が存在します。

関連ページ

関数

unchop(df, cols, keep_empty = FALSE, ptype = NULL)
引数説明
dfデータフレーム
colsList型の列を指定する
keep_emptyList型の中身が空の行を残す場合はTRUEを指定する
ptypeListを展開した列の型を指定する

使い方

解説用データフレーム

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

1.List型の展開

# List型の列x2を展開する
unchop(df, cols = x2)
# A tibble: 6 x 2
  x1       x2
  <chr> <dbl>
1 A         1
2 A         2
3 A         3
4 B         1
5 B         2
6 C         1

2.オプション

2-1.空の行を残す

# List型の列x2を展開し、空の行を残す
unchop(df, cols = x2, keep_empty = TRUE)
# A tibble: 7 x 2
  x1       x2
  <chr> <dbl>
1 A         1
2 A         2
3 A         3
4 B         1
5 B         2
6 C         1
7 D        NA

2-2.展開後の型を変換する

# List型の列x2を展開し、文字列型に変換する
unchop(df, cols = x2, ptype = tibble(x2 = character()))
# A tibble: 6 x 2
  x1    x2
  <chr> <chr>
1 A     1
2 A     2
3 A     3
4 B     1
5 B     2
6 C     1
Sponsored Link