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

使用dplyr::bind_rows合并tribbles时触发vec_size错误

R语言合并tribble对象触发vec_size()错误的解决方案

问题重现

执行以下合并两个tribble对象的代码时,触发环境类型不匹配错误:

library(tidyverse)

dplyr::tribble(
  ~comp, ~val,
  "g", 100
) %>% 
  dplyr::bind_rows(
    dplyr::tribble(
      ~comp, ~val,
      "h", 100
    )
  )

错误信息

Error in `vec_size()`:
! `x` must be a vector, not an environment.

环境确认

已排除函数遮蔽问题,tidyverse_conflicts()仅显示dplyr的filter()和lag()遮蔽了stats包同名函数,当前会话信息:

R version 4.2.1 (2022-06-23 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 25211)

Matrix products: default

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

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

other attached packages:
 [1] lubridate_1.8.0      forcats_0.5.2        stringr_1.4.1        dplyr_1.0.99.9000   
 [5] purrr_0.9000.0.9000  readr_2.1.3          tidyr_1.2.1          tibble_3.1.8        
 [9] ggplot2_3.3.6        tidyverse_1.3.2.9000

loaded via a namespace (and not attached):
 [1] rstudioapi_0.14       magrittr_2.0.3        hms_1.1.2             tidyselect_1.1.2.9000
 [5] munsell_0.5.0         colorspace_2.0-3      R6_2.5.1              rlang_1.0.6          
 [9] fansi_1.0.3           tools_4.2.1           grid_4.2.1            gtable_0.3.1         
[13] utf8_1.2.2            cli_3.4.1             withr_2.5.0           ellipsis_0.3.2       
[17] lifecycle_1.0.2.9000  crayon_1.5.2          tzdb_0.3.0            vctrs_0.4.2.9000     
[21] glue_1.6.2            stringi_1.7.8         compiler_4.2.1        pillar_1.8.1.9000    
[25] generics_0.1.3        scales_1.2.1          pkgconfig_2.0.3      

原因分析

错误根源是开发版dplyr(dplyr_1.0.99.9000)与当前vctrs包版本存在兼容性冲突,开发版包的内部逻辑依赖未匹配稳定版依赖包的接口,导致vec_size()函数误将环境对象当作向量处理。

解决方法

方案1:替换为稳定版dplyr

卸载开发版dplyr并安装官方稳定版,同时更新依赖的vctrs包:

# 卸载开发版dplyr
remove.packages("dplyr")
# 安装稳定版dplyr
install.packages("dplyr")
# 更新vctrs包至兼容版本
install.packages("vctrs")

完成后重启R会话,重新运行原代码即可恢复正常。

方案2:临时替代函数

如果暂时无法更换包版本,可使用tibble::add_row()替代bind_rows()实现行添加:

dplyr::tribble(
  ~comp, ~val,
  "g", 100
) %>% 
  tibble::add_row(comp = "h", val = 100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:45:30