仅在当天首次登录时从 .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")
}
}
我知道可以使用 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")
}
}