gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:33:08 25 4
gpt4 key购买 nike

下面是我在互联网上找到的一个非常简单的数据框示例。在我的机器上的 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/

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