0

我正在创建一个包并希望在本地存储设置数据,因为它对于包的每个用户都是唯一的,因此不必在每次加载包时都设置设置。

我怎样才能以最好的方式做到这一点?

4

1 回答 1

0

您可以将必要的数据保存在对象中,并saveRDS() 在进行更改或用户离开或发出保存命令时使用。它将 R 对象保存在指定路径中的文件名下。

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

您可以在下次包开始使用时加载它loadRDS()。好处loadRDS()是您可以为 obj 分配一个新名称。(因此您不必记住它的旧 obj 名称。但是,旧 obj 名称也会随对象一起加载,最终会污染您的命名空间。

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

在哪里存储

视窗

也许在这里

您可以使用 %systemdrive%%homepath% 环境变量来完成此操作。

连接时的两个命令变量为您提供所需的用户主目录路径,如下所示:

在命令提示符下运行 echo %systemdrive% 会给出:

C:

在命令提示符下运行 echo %homepath% 会给出:

\用户\

当一起使用时,它变成:

C:\用户\

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”。

如果有人有更好的解决方案,请帮助!

于 2018-05-27T19:21:54.280 回答