什么函数/包与R中的dplyr冲突?

sqxo8psd  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(176)

dplyr以前工作没有问题,最近好像和我加载的其他软件包有冲突。我没有使用plyrMASS

mtcars%>%select(mpg)

选择(.,mpg)时出错:未使用参数(mpg)
为什么会出现此错误?

rur96b6h

rur96b6h1#

SparkR也与select冲突(object 'mpg' not found
您不必记住装入包的顺序,还可以使用
mtcars %>% dplyr::select(mpg)
当你遇到这些冲突的时候。

wnvonmuf

wnvonmuf2#

我最近在Azure数据块中遇到了一个类似的R脚本问题。为了解决这个问题,我安装了R conflicted包,调用了库,然后运行了我的代码。控制台窗口中随后出现一条消息,指示dplyrmutate函数与sparkR中的函数冲突。要轻松解决这个问题,你可以用conflict_prefer()函数告诉R默认使用哪个包,并将冲突函数名的参数和冲突发生时使用的首选/默认包传递给它。

步骤1.安装冲突的文件并附加

install.packages("conflicted")
library(conflicted)

#步骤2.运行可能与已附加的包冲突的代码

(Note:我使用的是R4.1,它使用了新的管道操作符|〉而不是旧版本中的%〉%:

cars |> mutate(log_dist=log(dist))

在我的例子中,这会在控制台/日志中产生以下输出:

Error:
! [conflicted] `mutate` found in 2 packages.
Either pick the one you want with `::` 
 * SparkR::mutate
 * dplyr::mutate
Or declare a preference with `conflict_prefer()`
 * conflict_prefer("mutate", "SparkR")
 * conflict_prefer("mutate", "dplyr")

#第3步.修改代码,告诉R在包之间发生函数冲突时使用哪个包

conflict_prefer("mutate", "dplyr")
cars |> mutate(log_dist=log(dist))

结果符合预期,无错误/警告:

speed dist  log_dist
1      4    2 0.6931472
2      4   10 2.3025851
3      7    4 1.3862944
4      7   22 3.0910425
.
.
.

当然,你总是可以明确地告诉R使用哪个库:

cars |> dplyr::mutate(log_dist=log(dist))

相关问题