Сохранение параметров пакета между сеансами

есть ли окончательный способ сохранить параметры или информацию, относящуюся к определенному пакету между сеансами?

например, скажем, кто-то сделал игру и выпустил ее как пакет R. Если бы они хотели сохранить высокие баллы и не сбрасывать их каждый раз, когда R начал новую сессию, что было бы лучшим способом сделать это? В настоящее время я могу думать только о хранении файла в домашнем каталоге пользователей, но я не уверен, что мне нравится этот подход.

2 ответов


это может быть подход. Я создал фиктивный пакет с фиктивной функцией (любая функция, которую я создаю, обязательно будет фиктивной функцией) и набором данных, который я назвал scores что я установил следующим образом:

scores <- NA

затем я создал пакет с набором данных баллов.

затем я использовал следующее, чтобы изменить набор данных из R.

loc <- paste0(find.package("new"), "/Data")
unlink(paste0(loc, "/scores.rda"), recursive = TRUE, force = FALSE)
scores <- 10

save(scores, file=paste0(loc, "/scores.rda"))

затем, когда я выгрузил библиотеку и снова загрузил набор данных сейчас говорит:

> scores
[1] 10

может ли это быть изменено, чтобы сделать то, что вы хотите? Вы должны были бы сохранить его между каким-то образом, но я не уверен, как это сделать, не возясь с


Я думаю, что нет способа сохранить настройки без сохранения их на диск или базу данных, так или иначе. Это можно сделать тихо, хотя, поставив код ниже в вашем ~/.Rprofile. Однако, если у вас есть пакеты, которые сохраняют настройки другими способами, чем использование options вы должны добавить их вручную.

Я знаю, что это именно то, что вы сказали, что не хотите, но это может вызвать некоторые споры, по крайней мере.

.Last <- function(){
    my.options <- options()
    save(my.options, file="~/.Roptions.Rdata")
}

.First <- function(){
    tryCatch({
        load("~/.Roptions.Rdata")
        do.call(options, my.options)
        rm(my.options)
    }, error=function(...){})
}

к моему удивлению try(..., silent=TRUE) выдает предупреждение при запуске, если ~/.Roptions.Rdata не существует, поэтому я использовал tryCatch вместо.