sessionInfo()
# R version 3.1.1 (2014-07-10)
# Platform: x86_64-apple-darwin10.8.0 (64-bit)
#
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
#
# other attached packages:
# [1] dplyr_0.3.0.2
#
# loaded via a namespace (and not attached):
# [1] assertthat_0.1 DBI_0.3.1 lazyeval_0.1.9 magrittr_1.0.1 parallel_3.1.1 Rcpp_0.11.3
# [7] tools_3.1.1
packageVersion("dplyr")
# [1] ‘0.3.0.2’
iris[1:10,] %>% rename(petal_length = Petal.Length)
# Sepal.Length Sepal.Width petal_length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# other attached packages:
# [1] reshape_0.8.5 dplyr_0.3.0.2
#
# loaded via a namespace (and not attached):
# [1] assertthat_0.1 chron_2.3-45 data.table_1.9.5 DBI_0.3.1 lazyeval_0.1.9
# [6] magrittr_1.0.1 parallel_3.1.1 plyr_1.8.1 Rcpp_0.11.3 reshape2_1.4
# [11] stringr_0.6.2 tidyr_0.1 tools_3.1.1
iris[1:10,] %>% rename(petal_length = Petal.Length)
# Error in rename(`iris[1:10, ]`, petal_length = Petal.Length) :
# unused argument (petal_length = Petal.Length)
iris[1:10,] %>% rename(c("Petal.Length" = "petal_length"))
# Sepal.Length Sepal.Width petal_length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
这是一个错误吗?
答案 0 :(得分:15)
如果加载了两个或多个包含同名函数的包,则需要使用双冒号运算符::
从包中获取该函数的版本最后加载的包(希望这是有道理的)。
因此,就这两个软件包而言,这意味着dplyr::rename()
使用dplyr
版本,或reshape::rename()
使用reshape
版本,具体取决于搜索路径上的包。
由于您在加载reshape
软件包后加载了dplyr
软件包,因此您需要dplyr::rename()
使用rename()
软件包中的dplyr
函数。 <{1}}在这种情况下单独发送rename()
版本。
reshape
应该这样做。
答案 1 :(得分:1)
我推荐data.table::setnames
功能。
iris %>%
data.table::setnames(
old = "Petal_length",
new = "petal_length") %>%
head