在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) 感谢
答案 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)