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

在R中遇到‘Error: `...` is not empty’错误的原因与排查求助

问题原因与解决方案

核心原因:dplyr版本API变更

你遇到的问题完全是dplyr版本升级带来的参数校验规则变化:

  • 在dplyr 0.8.5及更早版本中,ungroup()函数会忽略传入的多余参数(比如你代码里的x或screenData),不会触发报错;
  • 从dplyr 1.0.0开始,官方对ungroup()的...参数做了严格校验——这个参数仅预留用于未来功能扩展,必须为空。当你通过管道传参后又额外传入对象时,就触发了ellipsis::check_dots_empty()的报错。

看你的最小复现示例

这段代码的问题很明显:

library(dplyr)
x <- data.frame(1)
x %>% ungroup(x)

管道符%>%已经把x作为第一个参数传给ungroup()了,后面的x完全是多余的。旧版本会默默忽略这个冗余参数,但新版本会直接报错。

针对你实际代码的修复

把你的代码行:

screenData <- mutate_if(screenData, is.character, as.factor) %>% ungroup(screenData)

修改为:

screenData <- mutate_if(screenData, is.character, as.factor) %>% ungroup()

去掉ungroup()里的screenData参数即可——管道已经帮你把处理后的数据集传给ungroup()了,不需要重复传入。

后续排查这类问题的思路

  1. 查版本变更日志:dplyr 1.0.0是一个大版本更新,很多函数的参数规则都做了收紧,优先看官方的版本更新说明能快速定位问题;
  2. 查函数文档:在新版本中,?ungroup会明确标注...参数“仅用于未来扩展,必须为空”;
  3. 利用错误栈:你用options(error = recover)拿到的调用栈已经很清晰——错误来自ellipsis::check_dots_empty(),直接指向“多余参数”的问题。

你尝试的重装dplyr操作没问题,但本质是代码写法和新版本API不兼容,所以重装无法解决,修改代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:43:16