R4DS错误比较(1)仅适用于原子和列表类型

时间:2017-01-26 03:01:55

标签: r ggplot2 filter

在R4DS第3.6节中,作者提出以下代码:

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
  geom_point(mapping = aes(color = class)) + 
  geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)

会导致以下错误

Error in class == "subcompact" : 
  comparison (1) is possible only for atomic and list types

我认为它在作者写作时起作用,因为他们有一个很好的情节来说明结果。

发生了什么,我该如何解决? (OS X上的R 3.3.2) 感谢

3 个答案:

答案 0 :(得分:12)

filter()函数来自dplyr包。在运行这些行之前,请确保已加载它。否则,您正在与内置函数class()进行比较,而不是mpg$class

答案 1 :(得分:8)

您可能有另一个包含函数(过滤器)的包并且屏蔽了dplyr过滤器

快速而肮脏的修复:

dplyr::filter()

而不是

filter()

答案 2 :(得分:1)

使用库(dplyr)

library(dplyr)

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth(
    data = filter(mpg, class == "subcompact"),
    se = FALSE)