R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错

R语言 Error相关处理

recode函数报错

用r语言做分位数回归使用recode()函数对数据进行重新编码,本来应该调用car包里面的recode函数,
即 recode(x,recodes,as.factor.result,levels) ,
其中:

  • x 为数值向量,字符向量或者factor 变量。
  • recodes为设定重新编码规则的字符串。
  • as.factor.result为是否输出factor变量;若是则为TRUE,不是为FALSE。
  • levels为排序向量。指定新的编码分组的顺序(默认是按照分组名称排序)。
    具体使用请点击本链接:
    但因为同时加载了dplyr包,所以导致car中的recode函数被覆盖,调用了dplyr里面的recode函数,结果报错如下:
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    一开始博主一直检查数据,花了很多时间最后发现是函数引用出了问题(博主刚开始用R,还在学习中ing)。在网上查找大量资料后明白问题根源,其实报错里面有提示,是从dplyr包里面调用的recode函数,所以函数格式不同。
    最后博主采用的解决办法是在每次调用recode函数前加上 car:: ,相当于指定路径,即car::recode(x,…),此方法参考链接点击
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    报错解决。于是恍然大悟,决定记录于此。
    其实在最开始加载一些需要使用的数据包时就有提示xx被覆盖问题:
    the following object was masked from ‘packages: car’ : recode
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    不过没引起注意,现在回过头来一下子明白问题所在。
    另发现Rstudio可以直接查看工作空间里面所使用的函数包,点击界面右上角Global Environment 可查看,如图:
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    或者使用search()函数查看所使用的函数包,
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    可以看到,dplyr包在car包前面,在使用recode函数时先在dplyr包里查找到了,就停止了查找并调用了dplyr里面的recode函数。
    在Global Environment 里面点击car包打开查看,recode函数格式已经被改成了dplyr里面的函数格式,
    R语言 car包recode()函数被dplyr包里的同名recode()函数覆盖导致出错
    即最开始加载car包时提示的被覆盖问题。