是否有确定的方法来保存会话之间某个包的选项或信息?
例如,有人制作游戏并将其作为R包发布.如果他们想要保存高分并且每次R开始新会话时没有重置它们,那么最好的方法是什么?目前我只能想到将文件存储在用户主目录中,但我不确定我是否喜欢这种方法.
这或许是一种做法。我创建了一个虚拟包,其中包含一个虚拟函数(我创建的任何函数都必然是一个虚拟函数)和一个我调用的数据集,scores设置如下:
scores <- NA
Run Code Online (Sandbox Code Playgroud)
然后我使用分数数据集创建了包。
然后我使用以下命令从 R 中更改数据集。
loc <- paste0(find.package("new"), "/Data")
unlink(paste0(loc, "/scores.rda"), recursive = TRUE, force = FALSE)
scores <- 10
save(scores, file=paste0(loc, "/scores.rda"))
Run Code Online (Sandbox Code Playgroud)
然后,当我卸载库并重新加载时,数据集现在显示:
> scores
[1] 10
Run Code Online (Sandbox Code Playgroud)
可以修改它来做你想要的吗?您必须以某种方式将其保存起来,但不确定如何在不影响.Last功能的情况下做到这一点。
编辑:
看来此选项不可行,因为当您编译为包并使用延迟加载时,它将数据集保存为:
RData.rbd、RData.rbx,不是 .rda 文件。这意味着我上面使用的方法有点毫无价值,因为我们希望它自动被识别。
EDIT2
这种方法有效,我在我制作的包上尝试过。您无法延迟加载数据,并且必须显式使用或在您调用的函数内部data(scores)使用。data(scores)我还在第一次创建 int global.env 时将其分配scores给它并在函数内部使用以查看它是否存在。如果`.scores。存在我将其分配给函数内的分数。一旦你卸载了库并再次加载,你就再也不用担心这个问题了。.scoresexists
也许另一种选择是以某种方式将其保存为一个函数,可以使用 Josh 的建议进行更改:永久替换函数
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |