使用devtools查看我的包文档

时间:2015-07-16 20:02:39

标签: r devtools

我正在使用devtools处理我正在处理的包。

如果我运行R然后运行

library(devtools)
devtools:::load_all()

我可以查看我的包文档。

但是,我正在尝试创建一个别名来自动启动R(它实际上是进入Makefile)。所以我用这两行创建了一个文件“load.R”,然后运行

R_PROFILE=load.R R

我正确加载了我的包(例如,我可以执行mypackage:::并查看所有功能)但我无法访问我的帮助文件。

(如果我启动R并运行source("load.R")我可以看到我的帮助文件,所以我确信这不是一个错字或其他愚蠢的东西。)

我认为这可能与load_all电话的时间有关;我相信传递R_PROFILE会在会话变为交互之前运行代码。所以,或者,有没有办法运行像

这样的东西
R -e 'source("load.R")'

并保持交互,而不是在代码终止后退出?

感谢。

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案,虽然我很欣赏任何其他想法,因为我对这样的环境感到有点不舒服。

devtools通过创建一个新的环境来定义help?,这些新环境定义了可以查看我的包的帮助文件的函数版本,并附加了这个环境。当它以交互方式调用时,search()堆栈已经填充了默认环境,特别是内置包package:utils中的utils环境(其中help和存在?attach新环境时,它会被添加到search()堆栈的顶部(仅在.GlobalEnv后面。

但是,R_PROFILE的加载时间早于那些正在加载的基础软件包,因此在使用R_PROFILE=load.R时,devtools堆栈上的search()环境较低,因此help和{ {1}}坚持使用默认版本。

我的解决方案是将?更新为

load.R

这会强制library(utils) library(devtools) load_all() utils之前加载,以便环境顺序符合要求。