我有一个包,旨在供通过 Rscript 运行的非交互式脚本使用。但我也希望能够在交互式会话中加载它,主要用于调试目的。当在 Rscript 或其他非交互式会话中使用时,我想使用 .onLoad 进行一些初始化,所以我有一些类似的东西:
.onLoad <- function(libname, pkgname) {
if ( !interactive() ) {
# Do some stuff
} else {
# Do something slightly different
}
问题是即使在交互式会话中,interactive() 在 .onLoad 中也会返回 FALSE。我通过以下方式测试:
.onLoad <- function(libname, pkgname) {
print( paste( "interactive() = ", interactive(), collapse="" ) )
}
然后,当我build()
和install()
(使用 devtools)安装时,会附加带有消息的库"interactive() = FALSE"
。
有任何想法吗?.onLoad() 和 interactive() 的文档都没有说任何相关的内容。
菲尔