首页 > 解决方案 > Tidyverse 和 dplyr- 错误包或命名空间

问题描述

我似乎无法让过滤器功能与 tidyverse 的加载一起工作。我已经比较了代码并且知道它是正确的但是我每次都会收到错误消息。我检查了多个在线资源,但似乎没有任何帮助。我还更新了所有软件包并重新启动它们。任何帮助表示赞赏!

这是我的代码:

library(tidyverse)

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = Hwy))

filter(mpg, cyl == 8)
filter(diamonds, carat > 3)

错误:

library(tidyverse)

Error: package or namespace load failed for ‘tidyverse’ in loadNamespace(I, 
c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
 namespace ‘rlang’ 0.4.2 is already loaded, but >= 0.4.3 is required
In addition: Warning message:
package ‘tidyverse’ was built under R version 3.6.3 

filter(mpg, cyl == 8)

Error in filter(mpg, cyl == 8) : object 'cyl' not found
    In addition: Warning messages:
    1: In data.matrix(data) : NAs introduced by coercion
    2: In data.matrix(data) : NAs introduced by coercion
    3: In data.matrix(data) : NAs introduced by coercion
    4: In data.matrix(data) : NAs introduced by coercion
    5: In data.matrix(data) : NAs introduced by coercion
    6: In data.matrix(data) : NAs introduced by coercion

    filter(diamonds, carat > 3)

    Error in filter(diamonds, carat > 3) : object 'carat' not found

标签: rtidyverse

解决方案


您的问题是tidyverse没有被加载到您的 R 会话中,因此当您调用 时filter,它来自stats包而不是 dplyr。这就是为什么在 R 中使用命名空间是一种很好的做法,例如dplyr::filter,这样您就可以准确地知道您正在调用哪个函数。

要修复加载 tidyverse 的错误,请更新 rlang库:

update.packages()

然后尝试

dplyr::filter(mtcars, cyl == 8)

推荐阅读