是否存在 R 包可以存储缓存数据的预定义位置?数据应该跨会话持续存在。我正在考虑创建一个 的子目录${R_LIBS_USER}/package_name
,但我不确定这是否是可移植的,以及如果我的包安装在系统范围内,这是否是“允许的”。
想法如下:在包mydata.R
的data
子目录中创建一个 R 脚本,该脚本将通过调用来执行data(mydata)
(根据文档data()
)。如果之前没有缓存过,此脚本将从 Internet 加载数据并缓存它。(如果数据已经被缓存,将使用缓存。)此外,将提供一个功能来使缓存无效和/或检查是否有更新版本的数据在线可用。
这来自以下文档data()
:
目前支持四种格式的数据文件:
以 '.R' 或 '.r' 结尾的文件在 source()d 中,R 工作目录临时更改为包含相应文件的目录。(数据确保 utils 包已附加,以防它通过 utils::data 运行。)
...
实际上,fortytwo.R
在包的data
子目录中创建一个文件,其内容如下:
fortytwo = data.frame(answer=42)
然后执行data(fortytwo)
创建一个数据框变量fortytwo
。现在的问题是:如果fortytwo.R
数据难以计算,将在哪里缓存数据?
编辑:我正在考虑创建两个包:提供数据的“数据”包和对其进行操作的“代码”包。问题涉及“数据”包:它可以将文件存储在每个用户存储的什么位置,以便它在 R 会话中持久存在并且可以从不同的 R 项目访问?