我有以下代码,目的是基于gridExtra制作一个tableGrob图并将其作为函数中的对象返回
library(gridExtra)
myfunc <- function () {
d <- head(iris, 3)
g <- tableGrob(d)
grid.draw(g)
}
但是为什么我这样称呼它
out_plot <- myfunc()
png(file='my_out_file.png', width=800, height=800)
out_plot
dev.off()
out_plot
内部没有任何内容,并且未创建my_out_file.png
。
什么是正确的方法?
答案 0 :(得分:2)
您必须在设备中调用grid.draw
才能创建文件。请注意out_plot <- myfunc()
如何在活动(在我的情况下是一个RStudio)设备中创建一个绘图。您的函数返回NULL
因为grid.draw
返回的内容,请检查str(out_plot)
。
因此,只需在png
设备中调用您的函数:
library(gridExtra)
library(grid)
myfunc <- function () {
d <- head(iris, 3)
g <- tableGrob(d)
grid.draw(g)
}
png(file='my_out_file.png', width=800, height=800)
myfunc()
dev.off()
答案 1 :(得分:1)
您可以在绘制后返回对象,
myfunc <- function () {
d <- head(iris, 3)
g <- tableGrob(d)
grid.draw(g)
invisible(g)
}