R >=4.1 函数符号 \(x) 会引发 group_map() 错误(purrr 包)

问题描述 投票:0回答:1

我想对 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
#> 
#> ------------------------------------------------------------------------------
r purrr
1个回答
1
投票

用于映射组的函数需要容纳两个参数(数据和组),无论符号如何。尝试:

mtcars |>
  group_by(cyl) |>
  group_map(\(x, y) lm(mpg ~ disp + hp, data = x))
© www.soinside.com 2019 - 2024. All rights reserved.