我正在研究Hadley Wickham的2015年ggplot书。在其中,有一行代码(已经加载了ggplot2包):
presidential <- subset(presidential, start > economics$date[1])
它工作正常。我尝试用filter替换子集,如下所示:
library(dplyr)
presidential <- filter(presidential, start > economics$date[1])
我收到错误:
Error in `>.default`(start, x) :
comparison (6) is possible only for atomic and list types
如果比较不正确,它是否也不会影响子集?
答案 0 :(得分:0)
我想我发现了这个问题。如果我明确指定dplyr ::如下所示,那么它可以工作:
presidential <- dplyr::filter(presidential, start > economics$date[1])
这意味着其他一些过滤器功能正在覆盖dplyr中的那个。
在我之前发布的代码中,我在我认为导致问题的代码行之前指出了库(dplyr)行,但实际上,dplyr早先作为启动脚本的一部分加载了。
看起来在加载dplyr之后加载了具有过滤功能的stats包(因为dplyr在我的启动脚本中),因此stats :: filter masked dplyr :: filter。
我真的应该在发布之前先检查一下,但它确实突出了启动脚本中加载包可能产生的影响。另一个棘手的问题是,在这种情况下,我们不会收到有关已经发生的屏蔽的任何消息。