gpt4 book ai didi

r - dplyr 重命名 - 错误 : `new_name` = old_name must be a symbol or a string, 不是公式

转载 作者:行者123 更新时间:2023-12-01 17:33:22 24 4
gpt4 key购买 nike

我正在尝试使用 dplyr::rename() 重命名列,但 R 返回了此错误,我无法在网上找到该错误。

错误:`new_name` = old_name 必须是符号或字符串,而不是公式

使用 2 列数据框的可重现示例:

library(dplyr)
df <- data.frame(old_name = seq(1:10), x = seq(1:10))
df %>% dplyr::rename(new_name = old_name)

session 信息:

> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin17.2.0 (64-bit)
Running under: macOS High Sierra 10.13.1

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] dplyr_0.7.4

loaded via a namespace (and not attached):
[1] compiler_3.4.3 magrittr_1.5 assertthat_0.2.0 R6_2.2.2
[5] bindrcpp_0.2 glue_1.2.0 tibble_1.3.4 Rcpp_0.12.14.3
[9] pkgconfig_2.0.1 rlang_0.1.4.9000 bindr_0.1
>

我希望这个新的简单数据框的第一列重命名为new_name。这也不适用于 rename_()

当前的 R 版本是 3.4.3,dplyr 版本是 0.7.4。我无法在 R 版本 3.3.3 上复制它,但能够在 R 版本 3.4.0 上复制它。这是在完全干净的 R session 上进行测试的。

我当前的解决方案是使用 plyr::rename 重写部分代码,因为这仍然有效,但这并不理想,因为它需要我重写大量代码。
使用 plyr() 的工作示例:

library(plyr)
df <- data.frame(old_name = seq(1:10), x = seq(1:10))
df %>% plyr::rename(replace = c('old_name' = 'new_name'))

最佳答案

正如 @aosmith 评论的那样,这是将开发版本的 rlang 包(来自 GitHub)与发布版本的 dplyr(来自 CRAN)结合使用的结果。完整讨论在这里:https://github.com/tidyverse/dplyr/issues/3252

两个包都应该来自 CRAN 或都来自 GitHub;不匹配就是问题所在。要解决此问题,您可以使用 devtools::install_github("tidyverse/dplyr") 将 dplyr 更新到开发版本,或者将 rlang 安装恢复到当前的 CRAN 版本。

关于r - dplyr 重命名 - 错误 : `new_name` = old_name must be a symbol or a string, 不是公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com