Я пытаюсь переименовать столбец с dplyr::rename()
, и R возвращает эту ошибку, что я не могу найти нигде в сети.
Error: `new_name` = old_name must be a symbol or a string, not formula
Воспроизводимый пример с 2-х столбчатым фреймом данных:
library(dplyr)
df <- data.frame(old_name = seq(1:10), x = seq(1:10))
df %>% dplyr::rename(new_name = old_name)
Информация о сеансе:
> 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. Я не смог воспроизвести это в версии 3.3.3 R, но смог воспроизвести его на R версии 3.4.0. Это было протестировано на полностью чистой сессии R.
Мое текущее решение состоит в том, чтобы переписать часть моего кода с 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'))