我想对 R 版本 4.1 及更高版本中的函数使用简短表示法
\(x) x+1
(受到 tidyverse
开发人员的鼓励)以及 group_map()
包中的 purrr
。似乎不起作用还是我做错了什么?
library(purrr)
# old notation works
mtcars |>
group_by(cyl) |>
group_map(~ lm(mpg ~ disp + hp, data = .x))
# R version >=4.1 notation does not work
mtcars |>
group_by(cyl) |>
group_map(\(x) lm(mpg ~ disp + hp, data = x))`your text`
创建于 2023-08-19,使用 reprex v2.0.2
会议信息
sessioninfo::session_info()
#> - Session info ---------------------------------------------------------------
#> version R version 4.3.1 (2023-06-16 ucrt)
#> os Windows 10 x64 (build 17763)
#> system x86_64, mingw32
#> ui RTerm
#> language (EN)
#> date 2023-08-19
#>
#> - Packages -------------------------------------------------------------------
#> package * version date (UTC) lib source
#> purrr * 1.0.2 2023-08-10 [1] CRAN (R 4.3.1)
#> reprex 2.0.2 2022-08-17 [1] CRAN (R 4.3.0)
#>
#> [1] C:/Users/te/AppData/Local/R/win-library/4.3
#> [2] C:/Program Files/R/R-4.3.1/library
#>
#> ------------------------------------------------------------------------------
用于映射组的函数需要容纳两个参数(数据和组),无论符号如何。尝试:
mtcars |>
group_by(cyl) |>
group_map(\(x, y) lm(mpg ~ disp + hp, data = x))