当RStudio项目打开时自动运行R代码

10
我写了一个R函数来更新包的版本号,可以在另一个问题中找到。我经常使用GitHub和RStudio,如果这个函数能在每次打开特定项目时自动运行(最好是在进行git commit/push时),那么就可以省去不少时间(而且更加精确)。但我不知道如何实现这一点或是否可能。
我可以使用.Rprofile来在每次启动R时运行R代码,所以我只需要在启动R时更新版本(或者构建它只在日期不是今天时才更新版本)即可,但这似乎有些过度了。
3个回答

10

太好了!我加入了一小段带有 utils:::menu 的代码,现在每次打开项目时都会询问我是否要更新软件包版本。谢谢! - Sacha Epskamp

4
我会使用.Rprofile实现这一目标。独立于您周围的工具链,有些话要说:knitr可以在RStudio中或不依赖它工作,对于Rcpp/RInside等也是如此。
您可以通过后端的钩子或添加包装器脚本来挂接svn的提交钩子。我认为您也可以这样做git,但我对此了解较少。因此,为了进行抽象处理,我会编写一个“commitThis”、“pushThis”或者其他功能,用于数字增量、测试运行、代码推送等操作。

0

如果您的代码需要 RStudio 已经在运行中(例如,因为它依赖于一些 rstudioapi:: 函数),将其直接放入 .Rprofile 中是行不通的(.Rprofile 在 RStudio 可用之前就已执行)。

相反,您可以设置一个 钩子函数来监听 "rstudio.sessionInit" 事件

setHook(
  hookName = "rstudio.sessionInit",
  action = function(newSession) {
    if (newSession) {
      # your code goes here
    },
  action = "append"
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接