【发布时间】:2012-04-30 15:56:51
【问题描述】:
我有一个包,旨在供通过 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() 的文档都没有说明任何相关内容。
菲尔
【问题讨论】:
标签: r package interactive