R包,代码只运行一次(每次安装)

oct*_*ern 3 analytics r

我想创建一个R软件包,在安装时显示维护者的联系信息,并要求用户在我们的安装列表中计算它们的权限.在用户第一次调用我们的一个函数时运行代码也是可以接受的,而不是立即安装.无论哪种方式,此消息应该只出现一次(除非用户重新安装/更新包).

我考虑过的:

  • 我知道如何包含一个供内部使用的数据集,但我不知道如何永久地更改这些数据.
  • 我们可以设置环境变量/应用程序设置,但我不知道是否有办法在会话结束后保持这种状态.
  • 使用外部服务/服务器会过于沉重,并且不允许不希望被跟踪的用户关闭该消息.

有没有办法做到这一点?

G. *_*eck 5

这可以运行不止一次,但只能在有限的时间窗内运行,所以也许它已经足够好了.

将此代码添加到您的软件包中,它将在安装后7天内随时加载软件包时发出消息,之后在更新软件包之前不再发出消息.

它的工作原理是将创建安装文件的时间与当前时间进行比较.它不需要对任何目录的写权限,只需读取,因此它通常应该工作.

.onLoad <- function(libname, pkgname) {
   ctime <- file.info(find.package(pkgname, libname))$ctime
   if (difftime(Sys.time(), ctime, unit = "day") < 7)
      packageStartupMessage("This msg will go away one week after installing this package")
}
Run Code Online (Sandbox Code Playgroud)