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