r - 仅在当天首次登录时从 .Rprofile 执行 .First()
问题描述
我知道可以使用调度程序来调度脚本和进程,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")
}
}
我想添加到此代码中的是一种检查日志的方法,并且仅在用户当天第一次登录时显示消息,而不是每次他们打开/关闭项目、重新启动 R等时显示消息。
解决方案
此代码测试名为 LogFile.txt 的文件。Ypu 可能想要将其命名为其他名称或将其隐藏在某个不起眼的目录中。如果文件存在,则代码读取文件的第一行。然后它将今天的日期存储在文件的第一行以处理以后的登录。如果文件的第一行包含今天的日期,则该函数只返回以便不运行星期一的测试。如果文件不存在或不包含今天的日期,则运行星期一测试。
.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")
}
}
推荐阅读
- r - 从零开始的 k-NN 算法精度低
- html - 如何让垂直滚动条变细,摆脱右下空白?
- pandas - Pandas Dataframe - 速率计算
- javascript - 无法在键入时显示文本
- c# - Asp.Net Core Swagger / FromForm FromForm 中的评论不显示
- swiftui - Swift UI @State 确实在第一次点击时设置
- swift - 在 MongoDB Realm 中终止并重新启用同步后,我必须在客户端删除哪个文件?
- unix - 使用awk根据文件中的键比较两行的值
- c++ - Arduino HID 项目键盘阵列
- r - R Dataframe - 在时间序列中应用表达式,并将结果输出到新的数据框中