R包检查中的奇怪错误:cleanEx()或dev.off()

时间:2018-10-04 02:01:15

标签: r bioinformatics r-package bioconductor

我不确定这是怎么回事...我正在尝试为Bioconductor开发R软件包,当在软件包检查中运行示例时,会出现一个奇怪的错误。

Running examples in ‘MMAPPR2-Ex.R’ failed
The error most likely occurred in:
> ### Name: prePeak
> ### Title: Identify chromosomes containing peaks
> ### Aliases: prePeak
> 
> ### ** Examples
> 
> postPrePeakMD <- prePeak(postLoessMD)
> 
> 
> 
> ### * <FOOTER>
> ###
> cleanEx()
> options(digits = 7L)
> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
Time elapsed:  423.952 27.296 464.105 0.004 0.14 
> grDevices::dev.off()
Error in grDevices::dev.off() : 
  cannot shut down device 1 (the null device)

如您所见,该错误不在我的代码中,而是在此后自动生成的“ FOOTER”部分中。我不知道我的程序包是如何弄乱图形设备的,因为它只处理图形设备一个地方,我在示例中注释了该部分的运行位置。我不确定该怎么办。

以下是有问题的Travis版本:https://travis-ci.org/kjohnsen/MMAPPR2/builds/436922565

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在我的情况下,for i in quotes: if 'love' in i: print(i) if 'power' in i: i.replace('power','POWER') print(i) if 'power' and 'love' in i: print(i.upper()) 正在将错误标识为与实际错误所在的函数不同,这可能是因为自动devtools::check()调用仅在检查了第二个函数的示例时才发生。我不能仅通过注释掉所有内容来解决问题,因为令人讨厌的图形代码不在示例中,而是在函数本身中。如果我在函数中注释了dev.off()和/或graphics.off(),则如果打开了62个以上的设备,则可能会出现错误。因此,我要做的是添加以下代码行:dev.off()。做到了。