首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在当天第一次登录时从.Rprofile执行.Rprofile()

仅在当天第一次登录时从.Rprofile执行.Rprofile()
EN

Stack Overflow用户
提问于 2019-03-31 16:56:53
回答 1查看 95关注 0票数 0

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

我知道如何只在星期一在.First()中运行函数,但希望它只在周一用户第一次打开RStudio时才运行。

这就是我到目前为止在我的.Rprofile中得到的

代码语言:javascript
复制
.First <- function(){
        today <- weekdays(as.Date(Sys.Date()))
if (today == "Monday"){
       print("Today is "Monday")
} else {
       print("Today is not Monday")
        }
}

我想在这段代码中添加一种方式来检查日志,并且只在用户第一次登录时显示消息,而不是每次他们打开/关闭项目、重新启动R等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-31 20:01:48

此代码测试一个名为LogFile.txt的文件。Ypu可能想给它起别的名字,或者把它隐藏在某个不知名的目录中。如果文件存在,代码将读取文件的第一行。然后,它将今天的日期存储在文件的第一行中,以处理以后的登录。如果文件的第一行包含今天的日期,则函数只返回,这样星期一的测试就不会运行。如果该文件不存在或不包含今天的日期,则将运行星期一测试。

代码语言:javascript
复制
.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")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55443232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档