Listen very carefully. I shall say this only once.
The onetime package provides convenience functions to run R code only once (ever) per user. For example, you can:
- Show a startup message only the first time (ever) that a package is loaded.
- Run cleanup code just once after an upgrade.
- Show the user a message, with the option not to show it again.
Onetime is a lightweight package. It requires just two package dependencies, rappdirs and filelock, with no further indirect dependencies. The total size including these dependencies is less than 50 Kb.
- For more information, see the vignette. 
- Development documentation is at https://hughjonesd.github.io/onetime/dev. 
Example
library(onetime)
ids  <- paste0("onetime-readme-", 1:3) 
for (i in 1:5) {
  onetime_do(cat("This command will only be run once.\n"), id = ids[1])
  onetime_warning("This warning will only be shown once.", id = ids[2])
  onetime_message("This message will only be shown once.", id = ids[3])
}
#> This command will only be run once.
#> Warning: This warning will only be shown once.
#> This message will only be shown once.Installation
Install onetime from r-universe:
install.packages("onetime", repos = c("https://hughjonesd.r-universe.dev", 
                                      "https://cloud.r-project.org"))Or on CRAN:
install.packages("onetime")Or install the development version from github with:
# install.packages("remotes")
remotes::install_github("hughjonesd/onetime")