saving_ggplot <- function(name = 'default', plotname = last_plot()) {
image_name = paste(name, ".png", sep="")
ggsave(image_name, plot = plotname,
scale = 1,
dpi = 300, limitsize = TRUE)
}
这是我保存ggplot的功能。但是,我对于我的生活无法弄清楚如何将name参数作为字符串。
例如,如果有人符文saving_ggplot(FILENAME, PLOTNAME)
它只会说没有对象FILENAME。在python中,我可以捕获它并将其用作str()
,但在R中使用as.character
或toString
仍然无效。
错误:
saving_ggplot(weightvsageTEST, weightvsageplot) Error in paste(name, ".png", sep = "") : object 'weightvsageTEST' not found
使用ggsave成功通话:
ggsave('weightvsage.png', plot = last_plot(),
scale = 1,
dpi = 300, limitsize = TRUE)
答案 0 :(得分:2)
您可以使用substitute()
:
saving_ggplot <- function(name, plotname) {
image_name = paste0(substitute(name), ".png") # paste0 removes need for sep arg
ggsave(image_name, plot = plotname,
scale = 1,
dpi = 300, limitsize = TRUE)
}
saving_ggplot(foo, p) # saves foo.png
或者,如果您想留在tidyverse
quasiquotation syntax内,请改为使用enexpr()
:
enexpr(name) # instead of substitute(name)
数据:
N <- 100
df <- data.frame(x=rnorm(n=N), y=rnorm(n=N))
p <- ggplot(df, aes(x,y)) + geom_smooth()