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

R语言中命名参数与省略号(...)共用为何导致lm_robust封装函数报错

错误原因

这个报错的核心是purrr公式匿名函数(~开头定义的匿名函数)的作用域优先级问题:

  • 你在~lm_robust(formula = .x, data = mtcars, ...)的函数体内部写的...,优先归属这个~定义的匿名函数本身,不会自动继承外层lm_robust_wrapper3的参数。
  • purrr对公式匿名函数做了特殊处理,内部未绑定的...会捕获到隐式的语言对象,这个对象被lm_robust误识别为weights参数,而语言类型的对象不符合参数要求,就触发了类型错误。
修复方案

有两种可行的修改方式:

方案1:改用普通匿名函数

普通匿名函数的作用域查找规则符合预期,内部的...会自动查找外层wrapper的参数:

lm_robust_wrapper3_fix1 <- function(...){
  f <- list(as.formula("wt ~ mpg"))
  map(f, function(x) lm_robust(formula = x, data = mtcars, ...))
}

方案2:将外层...传入map的参数列表

map本身的...参数会自动将传入的内容转发给每一次迭代的函数调用,不需要写在公式匿名函数内部:

lm_robust_wrapper3_fix2 <- function(...){
  f <- list(as.formula("wt ~ mpg"))
  map(f, ~lm_robust(formula = .x, data = mtcars), ...)
}

内容的提问来源于stack exchange,提问作者John-Henry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:09:02