gpt4 book ai didi

r - 是否有一个始终可写的持久位置可以被包用作数据缓存?

转载 作者:行者123 更新时间:2023-12-03 20:59:59 25 4
gpt4 key购买 nike

是否存在 R 包可以存储缓存数据的预定义位置?数据应该跨 session 持续存在。我正在考虑创建 ${R_LIBS_USER}/package_name 的子目录,但我不确定这是否是可移植的,如果我的包安装在系统范围内,这是否是“允许的”。
想法如下:创建一个 R 脚本 mydata.Rdata将通过调用 data(mydata) 执行的包的子目录(根据 data() 的文档)。如果之前没有缓存过,此脚本将从 Internet 加载数据并缓存它。 (如果数据已经被缓存,将使用缓存。)此外,将提供一个功能来使缓存无效和/或检查是否有更新版本的数据在线可用。
这是来自 data() 的文档:

Currently, four formats of data files are supported:

  1. files ending ‘.R’ or ‘.r’ are source()d in, with the R working directory changed temporarily to the directory containing the respective file. (data ensures that the utils package is attached, in case it had been run via utils::data.)

  2. ...


确实,创建文件 fortytwo.Rdata包含以下内容的包的子目录:
fortytwo = data.frame(answer=42)
然后执行 data(fortytwo)创建数据框变量 fortytwo .现在的问题是: fortytwo.R 在哪里?如果难以计算,缓存数据?
编辑 :我正在考虑创建两个包:提供数据的“数据”包和对其进行操作的“代码”包。问题涉及“数据”包:它可以将文件存储在每个用户的存储中的什么位置,以便它在 R session 中持久存在并且可以从不同的 R 项目中访问?
相关: Package that downloads data from the internet during installation .

最佳答案

在 R 中,对于特定于包的持久缓存没有绝对定义的位置。但是,R.cache package提供创建和管理缓存数据的接口(interface)。看起来它可能对您的场景有用。

当用户加载 R.cache ( library(R.cache) ) 时,他们会收到以下提示:

The R.cache package needs to create a directory that will hold cache files.
It is convenient to use one in the user's home directory, because it remains
also after restarting R. Do you wish to create the '~/.Rcache/' directory? If
not, a temporary directory (/tmp/RtmpqdUcbP/.Rcache) that is specific to this
R session will be used. [Y/n]:

然后他们可以选择在他们的主目录中创建缓存目录,这可能是持久的,或者创建一个特定于 session 的目录。如果你让你的数据包依赖于 R.cache,你可以在它的 .onLoad() 中检查缓存对象的存在。钩子(Hook)函数并下载数据(如果不存在)。或者,您可以按照您自己的问题中建议的方式执行此操作。

关于r - 是否有一个始终可写的持久位置可以被包用作数据缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com