2017-02-14 86 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文件導入。它可能(至少)在檢查時會發出警告,但它可能會工作得很好。