我是个懒惰的人,所以我不想一次又一次地输入相同的代码(甚至不复制和粘贴:P)。我想知道是否有可能编写一个函数,将一些文本字符串作为公式返回,所以下一次,当我想使用这个赞扬包时,我只需调用这个函数,整个代码就会自动粘贴进来。
例如,这一次,我使用ggplot2
生成一些方框图,并希望对我的绘图进行一些自定义。所以我有
ggplot(abc, aes(group, abcabc))+geom_boxplot(aes(fill=group)) +
geom_hline(yintercept=0, color="grey") +
theme(panel.background=element_rect(fill = "white")) +
scale_fill_manual(values = c("white", "white"))
您可以看到最后两行代码只是在做一些格式化设置。我可以使用这两行代码时,每次我想要生成这种格式的框图在未来。如果我可以编写一个函数,可以将这两行代码作为公式返回,那么以后我就可以将该函数用作ggplot
中的一些主题。所以我试着写一个这样的函数:
box.format<-function(){
return(as.formula('theme(panel.background=element_rect(fill = "white")) + scale_fill_manual(values = c("white", "white"))'))
}
然而,我收到这样一条信息:
错误:不知道如何向主题对象添加scale_fill_manual(value= c("white","white"))
是否有人知道如何修复此错误,或者是否有其他方法可以修复此错误?
发布于 2015-04-25 20:01:59
我想你可以试着结束。下面是一个快速的试验,尽管它没有得到充分的测试。理想情况下,您应该能够使用闭包创建自己的函数工厂。
mygg <- function(...) {
function(data, x, y) {
ggplot(data, aes(x, y))+geom_boxplot(aes(fill=x)) +
geom_hline(yintercept=0, color=color_param) +
theme(panel.background=element_rect(fill = back_param)) +
scale_fill_manual(values = c(scale_param_x, scala_param_y))
}
}
gg <- mygg(color_param = "grey", back_param = "white", scale_param_x = "white", scale_param_y = "white")
gg
function(data, x, y) {
ggplot(data, aes(x, y))+geom_boxplot(aes(fill=x)) +
geom_hline(yintercept=0, color=color_param) +
theme(panel.background=element_rect(fill = back_param)) +
scale_fill_manual(values = c(scale_param_x, scala_param_y))
}
<environment: 0x0000000018d7cea0>
https://stackoverflow.com/questions/29860781
复制相似问题