我试图制作一个函数,生成一些用于视觉评估的图。我通常在大多数情况下使用ggplot,但是模型的基础plot也很有帮助。当我尝试分配基本图时,它会生成图,但不会将其分配给变量,因此,当我尝试返回图(使用list()
)时,基本图不会显示并返回ggplot加上[NULL]
library(tidyverse)
my.fun = function(){
mod.lm = lm(mpg ~ disp, data = mtcars)
p1 = mtcars %>%
ggplot(aes(x = disp, y = disp))+
geom_point()
par(mfrow = c(2,2))
p2 <- plot(mod.lm)
list(p1, p2)
}
my.fun()
我从未使用过基础情节,但在几次尝试中遇到recordPlot(),如@user2554330(击败我2分钟)所说,您可以保存两个情节。改变plot()和ggplot()的顺序对我来说是有效的,所以第一个plot()被调用,而不是覆盖ggplot()输出。也可以将列表存储在变量中,然后调用对象。
library(tidyverse)
library(mtcars)
library(ggplot2)
my.fun = function(){
mod.lm = lm(mpg ~ disp, data = mtcars)
par(mfrow = c(2,2))
plot(mod.lm)
p1 <- recordPlot()
p2 <- mtcars %>%
ggplot(aes(x = disp, y = disp))+
geom_point()
list(p1, p2)
}
my.fun()
a <- my.fun()
基本绘图函数直接写入绘图设备,这与ggplot2函数不同,ggplot2函数在打印时生成一个对象进行写入。有可能保存一个基本的绘图(使用recordPlot()
函数),但它已经适应了它所使用的任何输出设备,如果在不同的设备上显示(使用replayPlot()
),看起来就不那么好了。