我正在创建一个R包,它在加载时无法显示导入包中的任何消息。我遇到了特定包mFilter的问题。如果我导入它,我总是得到
‘mFilter’ version: 0.1-3
‘mFilter’ is a package for time
series filtering
See ‘library(help="mFilter")’ for
details
Author: Mehmet Balcilar,
mbalcilar@yahoo.com
当用户加载我的包时,无论在.onLoad文件中添加suppressMessages('mFilter')。
我真的需要使用mFilter。因此从Imports列表中删除它无济于事。有谁知道我该怎么办?
答案 0 :(得分:0)
我认为你不能。在mFilter
包中,作者错误地使用了
message()
中使用.onLoad()
if(interactive() || getOption("verbose"))
writeLines(strwrap(txt, indent = 4, exdent = 4))
如果您以交互方式使用软件包,这将始终执行并且不会被禁止。
答案 1 :(得分:0)
如果您可以将mFilter
的使用限制为几个功能,则可以建议 mFilter
而不是导入或依赖它。然后,在需要它的函数中,您可以capture.output(require(mFilter, quietly = TRUE))
加载包(如果加载不成功,可以stop
添加mFilter
需要安装的消息。
或者,您可以采用相同的方法,但在您的包mFilter
中加载.onLoad
。
在mFilter
Imports中列出DESCRIPTION
(以确保其已安装)但{em>未导入{{1>}时,您甚至可以做一些棘手的事情1}}文件。它可能(至少)在检查期间发出警告,但它可能会正常工作。