仅在当天首次登录时从 .Rprofile 执行 .First()

Execute .First() from .Rprofile on first login of the day only

我知道可以使用 cron 调度程序来调度脚本和进程,以便在 R 本身的特定时间点自动执行 R 进程。我也知道您可以在 .Rprofile 中放置函数,以便在每次启动 R 时执行它们。

我想出了如何 运行 仅在星期一 .First() 内的一个功能,但希望它只在 运行 用户第一次打开 RStudio 时使用星期一。

这是我目前在 .Rprofile:

中得到的
.First <- function(){
        today <- weekdays(as.Date(Sys.Date()))
if (today == "Monday"){
       print("Today is "Monday")
} else {
       print("Today is not Monday")
        }
}

我想添加到这段代码的是一种检查日志的方法,并且只在用户当天第一次登录时显示消息,而不是每次他们 open/close 项目时,重新启动 R , .

此代码测试名为 LogFile.txt 的文件。 Ypu 可能想将其命名为其他名称或将其隐藏在某个晦涩的目录中。如果文件存在,代码会读取文件的第一行。然后它将今天的日期存储在文件的第一行以处理以后的登录。如果文件的第一行包含今天的日期,则函数只是 returns,因此星期一的测试不是 运行。如果文件不存在或不包含今天的日期,则星期一测试为 运行。

.First <- function(){
    today <- as.Date(Sys.Date())
    LastLog <- ""
    if(file.exists("LogFile.txt")) {
       LogFile <- file("LogFile.txt", open="r")
       LastLog <- readLines(LogFile, 1L)
       close(LogFile)
    }
    LogFile <- file("LogFile.txt", open="w")
    writeLines(as.character(today), LogFile) 
    close(LogFile)

    if(LastLog == as.character(today)) {
       # Already logged on today, just exit
       return()
    }

    ## If you get here, Need to run the first login code
    DOW <- weekdays(today)
    if (DOW == "Monday") { 
       print("Today is Monday") 
    } else {
       print("Today is not Monday")
    }
}