R扩展写入本地数据

时间:2018-05-27 17:53:28

标签: r packages r-extension

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

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

1 个答案:

答案 0 :(得分: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

存储位置

<强>窗

也许here

  

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

     

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

     

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

     

C:

     

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

     

\ Users \用户

     

一起使用时会变成:

     

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)中用于保存软件程序配置的此类文件的惯例。 例如“你的-包-name.rds”。

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