r - 在 R 中运行简单的 'rename' 函数时出现错误消息

标签 r rename dplyr

下面是我在互联网上找到的一个非常简单的数据框示例。在我的机器上的 RStudio 中运行它会出现一条错误消息:

Error: All arguments to rename must be named.


rename函数似乎很简单,但由于某些原因不起作用,我不知道为什么。
library("dplyr")

d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
d
#   alpha beta gamma
# 1     1    4     7
# 2     2    5     8
# 3     3    6     9

rename(d, c("beta"="two", "gamma"="three"))

#Error: All arguments to rename must be named.

最佳答案

简答

迈克,你的命令是有效的,但对于“plyr”包。如果您在同一脚本中加载“dplyr”,您将收到您提到的错误。

因此,试试这个:

library("plyr")
d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
d <- plyr::rename(d, c("beta"="two", "gamma"="three"))

一些额外的想法来更好地理解这个问题

1) search()
可以使用功能search()找出 R 搜索函数/对象的顺序。

在下面的例子中,除了加载两个函数名相同的包时得到的警告外,你还可以调用 search()意识到R将首先在“.GlobalEnv”(启动R时的默认环境)中查找函数,然后在“package:dplyr”中,然后在“package:plyr”中等等。所以你得到错误信息是因为 R 认为你想使用 rename()来自 dplyr 的函数包(优先于 plyr 因为最近加载)。

是的,更改加载包的顺序也可以解决问题,但这不是鼓励的解决方案 - 例如与您共享代码的同事,不知道该错误,可以轻松更改顺序,然后事情再次发生;或者你 future 的自己,忘记了“修复”,再次陷入同一个陷阱 - 经常发生在我身上:D

library(plyr)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:plyr':
#> 
#>     arrange, count, desc, failwith, id, mutate, rename, summarise,
#>     summarize
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
search()
#>  [1] ".GlobalEnv"        "package:dplyr"     "package:plyr"     
#>  [4] "package:stats"     "package:graphics"  "package:grDevices"
#>  [7] "package:utils"     "package:datasets"  "package:methods"  
#> [10] "Autoloads"         "package:base"

d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
rename(d, c("beta"="two", "gamma"="three"))
#> All arguments must be named

创建于 2019-04-20 由 reprex package (v0.2.1)

2)“冲突”包救援

此类错误比较常见,所以conflicted包在这里非常方便。加载后,您可以键入出现错误的函数的名称,并获得一些有用的信息来帮助您调试问题 - 请查看下面的示例:

library(conflicted)
library(plyr)
library(dplyr)

rename
#> [conflicted] `rename` found in 2 packages.
#> Either pick the one you want with `::` 
#> * dplyr::rename
#> * plyr::rename
#> Or declare a preference with `conflict_prefer()`
#> * conflict_prefer("rename", "dplyr")
#> * conflict_prefer("rename", "plyr")

创建于 2019-04-20 由 reprex package (v0.2.1)

关于r - 在 R 中运行简单的 'rename' 函数时出现错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562819/

相关文章:

r - 在哪里可以找到关于 `fun` 中的 `geom_line` 参数的文档?

r - 仅针对选定的列旋转更长的时间

r - 将列值与 dplyr::mutate 中的所有前导值进行比较

r - 根据数据框中的其他值,使用 n 按组选择前 n 个值

r - 使用几个月份的最大值计算年平均值

r - 使用 Caret 包进行随机森林(回归)时出错

r - 在R中组合字符时只粘贴一次

git 重命名许多文件和文件夹

azure - 是否可以使用 Azure 门户重命名 Azure 应用服务计划?

java - java 类的重命名如何影响 git 状态?