- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我有一个表,其中一些属性是列,一些属性是作为 postgres JsonField 实现的。 对于专栏,我可以写例如 Product.objects.values(brand=F('brand_nam
我正在尝试使用 dplyr::rename() 重命名列,但 R 返回了此错误,我无法在网上找到该错误。 错误:`new_name` = old_name 必须是符号或字符串,而不是公式 使用 2 列
我是一名优秀的程序员,十分优秀!