如何解决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
相关产品推荐
相关产品推荐

