tidy函数处理USAboundaries数据报错:region参数未被识别
解决
tidy(us_states(), region = "geoid")的报错问题 这个报错的核心原因很明确:你当前调用的tidy函数不是broom包的那个数据整理函数,而是被psych包的同名函数(或者说别名)覆盖了——错误提示里的psych::describe(x, ...)说明,当你输入tidy()时,R实际执行的是psych包的describe函数,而它完全不认识region这个参数。
快速解决方案
直接指定使用broom包的命名空间来调用tidy,绕过函数名冲突的问题:
library(USAboundaries) library(broom) # 明确调用broom的tidy函数 states_dat <- broom::tidy(us_states(), region = "geoid")
为什么会出现这个问题?
R里不同包可能会导出同名函数,当你加载多个包时,后加载的包的函数会覆盖先加载的。比如如果你先加载了psych包,再加载broom,那tidy会是broom的;但如果反过来,或者有其他包也导出了tidy,就会出现这种覆盖问题。你可以用下面的代码验证当前tidy函数的来源:
find("tidy") # 如果结果里有"package:psych",就说明被覆盖了
其他可选方案
- 调整包的加载顺序:确保broom在可能冲突的包(比如psych)之后加载,这样broom的
tidy会成为默认调用的函数:library(psych) # 先加载其他包 library(broom) # 后加载broom,覆盖同名函数 states_dat <- tidy(us_states(), region = "geoid") - 卸载冲突包:如果你暂时不需要psych包,可以移除它:
detach("package:psych", unload = TRUE) states_dat <- tidy(us_states(), region = "geoid")
内容的提问来源于stack exchange,提问作者SCDCE
相关产品推荐
相关产品推荐

