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

Apache Arrow R包结合dplyr verbs报错求助:`...`必须为空

解决Apache Arrow与dplyr配合使用时的... must be empty报错

问题重现

执行以下dplyr+Arrow代码时触发报错:

arrow_table(starwars) %>% 
  filter(species == "Human") %>% 
    mutate(height_ft = height/30.48) %>% 
      select(name, height_ft) %>% collect()

报错信息:

<error/rlib_error_dots_nonempty>
Error in `eval_select()`:
! `...` must be empty.
x Problematic argument:
* error_call = error_call
---
Backtrace:
     x
  1. +-... %>% collect()
  2. +-dplyr::collect(.)
  3. +-dplyr::select(., name, height_ft)
  4. +-dplyr::mutate(., height_ft = height/30.48)
  5. +-dplyr::filter(., species == "Human")
  6. \-arrow:::filter.ArrowTabular(., species == "Human")
  7.   \-arrow::compute_by(...)
  8.     \-arrow:::eval_select_by(by, data, error_call = error_call)
  9.       \-tidyselect::eval_select(expr = by, data = sim_df, allow_rename = FALSE, error_call = error_call)
 10.         \-ellipsis::check_dots_empty()
 11.           \-rlang:::action_dots(...)
 12.             +-base (local) try_dots(...)
 13.             \-rlang (local) action(...)

会话信息:

> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base      

other attached packages:
[1] arrow_13.0.0.1 dplyr_1.0.10  

loaded via a namespace (and not attached):
 [1] fansi_0.5.0      tzdb_0.1.2       assertthat_0.2.1
 [4] utf8_1.2.2       crayon_1.4.1     R6_2.5.1        
 [7] DBI_1.1.1        lifecycle_1.0.3  magrittr_2.0.1  
[10] pillar_1.6.2     rlang_1.0.6      cli_3.6.0       
[13] rstudioapi_0.13  vctrs_0.5.2      generics_0.1.0  
[16] ellipsis_0.3.2   tools_4.1.0      bit64_4.0.5     
[19] glue_1.6.2       bit_4.0.4        purrr_1.0.1     
[22] compiler_4.1.0   pkgconfig_2.0.3  tidyselect_1.1.1
[25] tibble_3.1.3 

报错原因

核心是版本兼容性问题:

  • 你使用的arrow_13.0.0.1属于较新版本,它对dplyr、tidyselect等依赖包的版本要求更高。
  • 从回溯信息可以看到,arrow调用tidyselect::eval_select时传递了error_call参数,但你当前安装的tidyselect_1.1.1不支持该参数,触发了ellipsis::check_dots_empty()的报错,提示多余的参数必须为空。

解决方法

方法1:升级dplyr及相关依赖包

arrow 13.x版本要求dplyr最低版本为1.1.0,而你当前使用的是dplyr_1.0.10,直接升级dplyr即可自动兼容依赖:

install.packages("dplyr")

升级完成后重启R会话,再运行原代码即可正常执行。

方法2:降级Arrow到兼容版本

如果无法升级dplyr,可以将Arrow降级到适配dplyr_1.0.10的版本(比如Arrow 10.x系列):

install.packages("arrow", version = "10.0.1")

注意:降级会丢失Arrow新版本的功能,优先推荐方法1。

验证

完成版本调整后,运行以下代码测试:

library(arrow)
library(dplyr)

arrow_table(starwars) %>% 
  filter(species == "Human") %>% 
  mutate(height_ft = height/30.48) %>% 
  select(name, height_ft) %>% 
  collect()

此时应该能正常返回筛选转换后的结果,无报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:05:56