トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン 印刷

map

auditR

map関数を使ってグループ単位に処理を適用する

map関数についてはTokyoRの@kilometerさんの記事がよくわかる。https://qiita.com/kilometer/items/7184904765fbf0f33f04

ここではハマった内容を残しておく。

  • 間違い(動かない)
iris |> group_by(Species) |> nest() |> mutate(result = map(.x = data, .f=~shapiro.test(Sepal.Length)))
Error in `mutate()`:
ℹ In argument: `result = map(.x = data, .f = ~shapiro.test(Sepal.Length))`.
ℹ In group 1: `Species = setosa`.
Caused by error in `map()`:
ℹ In index: 1.
Caused by error in `stopifnot()`:
!  オブジェクト 'Sepal.Length' がありません 
  • 正しい(r-wakalangでKDさんに教わった)
iris |> group_by(Species) |> nest() |> mutate(result = map(.x = data, .f=~shapiro.test(.x$Sepal.Length)))

map()の中で指定する関数に与える変数の指定方法に注意。

同じ目的を達成するには別の方法がある(by KD)

  • 基本
iris |> 
 summarize(result = list(shapiro.test(Sepal.Length)), .by = Species) |> 
 unpack(result)
  • 解析結果をきれいな data.frame として持ちたいとき
iris |> 
 summarize(result = broom::tidy(shapiro.test(Sepal.Length)), .by = Species) |> 
 unpack(result)
  • 解析結果を list として持ちたいとき
iris |> 
 summarize(result = list(shapiro.test(Sepal.Length)), .by = Species) |> 
 deframe()

Last updated 2023-02-28 | auditR (c) N.Nawata