我试图关闭R中的情节显示。
我读了Disable GUI, graphics devices in R但是给出的唯一解决方案是将绘图写入文件。
如果我不想污染工作空间怎么办?如果我没有写入权限怎么办?
我试过了options(device=NULL)
,但它没有用。
上下文是包NbClust
:我想要NbClust()
返回但我不想显示它的情节。
提前致谢!
编辑:这是一个可重复的例子,使用来自拨浪鼓包的数据:)
data(wine, package="rattle")
df <- scale (wine[-1])
library(NbClust)
# This produces a graph output which I don't want
nc <- NbClust(df, min.nc=2, max.nc=15, method="kmeans")
# This is the plot I want ;)
barplot(table(nc$Best.n[1,]),
xlab="Numer of Clusters", ylab="Number of Criteria",
main="Number of Clusters Chosen by 26 Criteria")
答案 0 :(得分:6)
您可以在
中打包电话pdf(file = NULL)
和
dev.off()
这会将所有输出发送到一个有效隐藏它的空文件。
答案 1 :(得分:2)
幸运的是,似乎NbClust
是一个巨大的混乱函数,其中包含一些其他函数和许多看起来很奇怪的代码。绘图是在两个地方之一完成的。
创建NbClust
的副本:
> MyNbClust = NbClust
然后编辑此功能。将标题更改为:
MyNbClust <-
function (data, diss = "NULL", distance = "euclidean", min.nc = 2,
max.nc = 15, method = "ward", index = "all", alphaBeale = 0.1, plotetc=FALSE)
{
然后将绘图代码包装在if
块中。 1588号线附近:
if(plotetc){
par(mfrow = c(1, 2))
[etc]
cat(paste(...
}
并且类似于第1610行。保存。现在使用:
nc = MyNbClust(...etc....)
除非您添加plotetc=TRUE
,否则您看不到任何情节。
然后让开发人员包含你的补丁。