2017-02-14 27 views
0

我正在创建一个R包,它在加载时不能显示来自导入包的任何类型的消息。我遇到了特定软件包mFilter的问题。如果我导入它,我总是得到禁止mFilter onLoad消息

‘mFilter’ version: 0.1-3 

‘mFilter’ is a package for time 
series filtering 

See ‘library(help="mFilter")’ for 
details 

Author: Mehmet Balcilar, 
[email protected] 

当用户加载的,无论在.onLoad文件中添加suppressMessages(“MFILTER”)我的包。

我真的需要使用mFilter。所以从进口清单中删除它并没有帮助。有谁知道我该怎么做?

回答

0

我不认为你可以。在mFilter包,而不是使用.onLoad()message(),作者不正确。如果您使用的是包交互,这将一直执行,不会被抑制使用

if(interactive() || getOption("verbose")) 
    writeLines(strwrap(txt, indent = 4, exdent = 4)) 

0

如果你可以限制你的mFilter只是一些功能的使用,你可以推荐mFilter,而不是导入或依赖于它。然后,在需要它的功能中,可以使用capture.output(require(mFilter, quietly = TRUE))加载程序包(如果加载不成功,则stop带有需要安装mFilter的消息)。

或者,您可以采用相同的方法,但在您的软件包的.onLoad中加载mFilter

你甚至可以做一些棘手的地方mFilterDESCRIPTION进口上市(以保证它被安装),但不是NAMESPACE文件导入。它可能(至少)在检查时会发出警告,但它可能会工作得很好。