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

如何解决dplyr包mutate()函数中vec_is_vector()已弃用的错误?

解决R更新后dplyr::mutate()因vec_is_vector()弃用报错的问题

这个报错的核心原因是更新R后,旧版本dplyr与新版rlang包API不兼容:vec_is_vector()函数已被rlang移除/标记为弃用,但旧版dplyr仍在调用该函数,导致冲突。

解决方案:

  • 优先方案:更新dplyr到最新稳定版
    新版本dplyr已经适配了rlang的API变更,不会再调用已弃用的函数。执行以下命令更新,之后重启R环境:

    install.packages("dplyr")
    
  • 修正原代码的赋值问题
    原代码中mutate(d, x3 = ht + age)只是生成了新数据框,但没有赋值给d,所以d不会被更新。正确写法如下:

    library(dplyr) 
        
    d <- data.frame( name = c("Abhi", "Bhavesh", "Chaman", "Dimri"), 
                    age = c(7, 5, 9, 16), 
                    ht = c(46, NA, NA, 69), 
                    school = c("yes", "yes", "no", "no") ) 
    
    # 直接赋值更新原数据框
    d <- mutate(d, x3 = ht + age) 
    print(d)
    
    # 或使用tidyverse风格的管道符
    d <- d %>% mutate(x3 = ht + age)
    print(d)
    
  • 临时替代方案(不推荐长期使用)
    如果因依赖限制无法更新dplyr,可以安装与旧版dplyr兼容的rlang版本:

    # 需要先安装remotes包
    install.packages("remotes")
    remotes::install_version("rlang", version = "0.4.11") # 版本号根据你的dplyr版本调整
    

验证结果

更新dplyr后运行代码,会得到包含新列x3的数据框,其中ht为NA的行,x3也会保留NA值,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 19:43:11