我在几乎所有的R图中都使用了theme_bw
命令,所以我想要覆盖ggplot函数,如下所示:
# Override the ggplot function to use theme_bw by default
ggplot <- function(...) {
ggplot(...) + theme_bw()
}
然而,当我这样做时,口译员抱怨说,
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
有没有办法指定函数中的ggplot应该是ggplot的原始版本,而不是我刚写的那个?
答案 0 :(得分:10)
使用::
运算符指定要调用ggplot2
包中的函数版本,而不是您刚刚在全局工作区中创建的版本。即
ggplot <- function(...) {
ggplot2::ggplot(...) + theme_bw()
}
应该有用(虽然我还没有测试过它!)
我也非常喜欢theme_bw()
。我这样做的方法是在加载包之后立即使用theme_set()
,例如
library("ggplot2"); theme_set(theme_bw())
这可以说比你的解决方案更容易,更惯用/更透明。
答案 1 :(得分:0)
另一种解决方案是修改Rprofile.site文档中的启动代码。 (对于Windows:它位于C:\ Program Files \ R \ R-n.n.n \ etc)。
将此代码添加到其中:
.First <- function(){
ggplot2::theme_set(theme_bw())
}
.First中的任何内容都将在启动时运行。