gpt4 book ai didi

r - 在 R 包中保存和检索临时文件

转载 作者:行者123 更新时间:2023-12-02 01:05:39 28 4
gpt4 key购买 nike

我应该如何在我的 R 包中保存文件?

换句话说,我的包的用户将下载一个远程文本文件,我希望用户下次加载包时可以使用该文件。

我创建的函数当前使用 tempfile() 保存文件.正如所写的那样,每次调用该函数时都会进行下载,并会创建一个新的临时文件。我认为这存在一个问题——如果用户多次运行该函数,/var 文件夹将因临时文件而变得臃肿。为了解决这个问题,我想检查文件是否已经存在,如果存在则使用现​​有版本而不是下载它。不幸的是,tempfile() 返回的路径在函数终止时丢失,因此在下次调用函数时无法使用路径来检查文件是否存在。

我可以将文件保存在我的包的/data 目录中吗?如何从用户的当前工作目录中找到该目录?

不需要保存在临时文件中。我更感兴趣的是学习如何在我的包中持久化数据。

谢谢你。

最佳答案

您可以使用 tempdir()然后是一个固定的文件名:

f <- file.path(tempdir(), "mypackage_thefile.csv")
if (file.exists(f)) {
d <- read.csv(f)
} else {
# download it and save to f
}

这些文件在每次 session 后被删除(当 tempdir 被删除时)
如果数据不是太大,您还可以随包提供数据(使用 R 读取,然后使用 saveRDS 将其保存为压缩的“rds”文件)。但是您通常不能让用户将其下载到包目录(通常是写保护的)。

要将数据添加到包中,请将其放入 data文件夹(使用 save 创建一个 .RData 文件,用于使用 data() 检索),或在 inst/extdata 中文件夹,以任何适当的格式,用于检索
f <- system.file("extdata/filename", package="pkgname")

writing R extensions manual

关于r - 在 R 包中保存和检索临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626331/

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