R расширение записи локальных данных

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

Как я могу сделать это наилучшим образом?

1 ответ

Вы можете сохранить необходимые данные в объекте и сохранить его, используя saveRDS()всякий раз, когда вносится изменение или когда пользователь покидает или дает команду на сохранение. Это сохраняет объект R, поскольку это находится под именем файла в указанном пути.

saveRDS(<obj>, "path/to/filename.rds")

И вы можете загрузить его в следующий раз, когда пакет начинает использовать loadRDS(), Хорошая вещь loadRDS() является то, что вы можете назначить новое имя для объекта. (Так что вам не нужно запоминать его старое имя объекта. Однако старое имя объекта также загружается вместе с объектом и в конечном итоге загрязнит ваше пространство имен.

newly.assigned.name <- loadRDS("path/to/filename.rds")
# or also possible:
loadRDS("path/to/filename.rds") # and use its old name

Где хранить

Windows

Может быть здесь:

Для этого вы можете использовать переменную окружения%systemdrive%%homepath%.

При объединении двух переменных команды вы получите путь к домашнему каталогу нужного пользователя, как показано ниже:

Запуск echo %systemdrive% в командной строке дает:

C:

Запуск echo %homepath% в командной строке дает:

\ Users \

Когда используется вместе это становится:

C:\Users\

Linux / OSX

Либо в расположении пакета пользователя,

path.to.package <- find.package("name.of.your.pacakge", 
                                lib.loc = NULL, quiet = FALSE,
                                 verbose = getOption("verbose"))
# and then construct with 
destination.folder.path <- file.path(path.to.package, 
                                     "subfoldername", "filename")`
# the path to the final destination
# You should use `file.path()` to construct such paths, because it detects automatically the correct ('/' or '\') separators for the file paths in Unix-derived systems (Linux/Mac Os X) versus Windows.

Или используйте переменную $HOME пользователя и там в файле - имя которого начинается с "." - это соглашение в Unix-системах (Linux/Mac OS X) для такого типа файлов, которые сохраняют конфигурации программ. например, ".your-packages-name.rds".

Если у кого-то есть лучшее решение, пожалуйста, помогите!

Другие вопросы по тегам