You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么purrr包的map函数中要使用波浪符~?

purrr包map函数前置~符号的作用

你代码中map里开头的~是purrr包提供的单侧公式匿名函数简写语法,和lm里定义模型用的~属于完全不同的语法场景,作用是简化匿名函数的写法:

  • 不用这个简写的话,你当前的代码等价于:
map(function(df) {
  lm(hp ~ wt, data = df)
})

用~简写后省去了手动定义function()的冗余代码,大幅简化映射逻辑的书写。

  • 该简写语法中有固定的占位符规则:单独的.或者.x代表map遍历传入的每一个元素,你这里拆分mtcars后传入map的每个元素就是按cyl分组后的子数据集,所以data = .就是指定建模用的数据集为当前遍历到的子分组。如果是处理多参数映射的map2、pmap,还可以用.y、..1、..2等占位符对应不同位置的入参。

你可以用简单的测试代码验证这个规则:

# 简写写法
map(1:3, ~ . * 2)
# 等价于完整匿名函数写法
map(1:3, function(x) x * 2)

两段代码返回的结果完全一致,都是list(2,4,6)。

内容的提问来源于stack exchange,提问作者STAT201UTK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:45:03