如何在 R 中调用函数时抑制绘图的创建?

问题描述 投票:0回答:2

我正在使用 R 中的一个函数(特别是

limma::plotMDS
),它可以生成绘图并返回一个有用的值。我想获得返回值而不产生绘图。有没有一种简单的方法来调用该函数但抑制它创建的绘图?

r
2个回答
10
投票

您可以像这样包装函数调用:

plotMDS.invisible <- function(...){
    ff <- tempfile()
    png(filename=ff)
    res <- plotMDS(...)
    dev.off()
    unlink(ff)
    res
}

调用示例:

x <- matrix(rnorm(1000*6,sd=0.5),1000,6)
rownames(x) <- paste("Gene",1:1000)
x[1:50,4:6] <- x[1:50,4:6] + 2
# without labels, indexes of samples are plotted.
mds <- plotMDS.invisible(x,  col=c(rep("black",3), rep("red",3)) )

0
投票

解决方案

pdf("NULL")
在您的工作目录中创建一个名为“NULL”的非指定文件。如果您想避免这种情况,可以使用更清洁的解决方案
tempfile
:

png(tempfile(fileext = ".png"))
plot(your_plot)
dev.off()
© www.soinside.com 2019 - 2024. All rights reserved.