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

purrr::map额外参数异常:为何.id指定的var列丢失?

问题原因解析

核心问题是参数传递的对象错误,具体拆解如下:

  • 初始代码里的.id = "var"是传给map_df()的参数,而你后来的写法误把这个参数传给了broom::tidy()。
  • map_df()的.id参数作用是:当迭代一个命名列表(这里select(where(is.numeric))返回的就是以列名为元素名的命名列表)时,自动生成一列(这里命名为var),存储每个列表元素的名称——也就是你要的回归变量名。
  • broom::tidy()的.id参数是另一个用途:它是在直接传入多个模型组成的列表时(比如tidy(list(model1, model2), .id = "model")),用来给不同模型的结果加标识列的。你在map()里逐个处理单个模型,传给tidy()的.id根本不会生效,同时map_df()没收到.id参数,自然就不会生成var列。

正确的匿名函数写法

如果你想用匿名函数,应该把.id = "var"留给map_df(),匿名函数只负责调用tidy():

penguins %>% 
  select(where(is.numeric)) %>% 
  map(\(x) lm(x ~ penguins$species, .)) %>% 
  map_df(\(x) broom::tidy(x), .id = "var")

或者用公式式匿名函数:

penguins %>% 
  select(where(is.numeric)) %>% 
  map(\(x) lm(x ~ penguins$species, .)) %>% 
  map_df(~ broom::tidy(.x), .id = "var")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:07:05