保存R之外的近似结果

时间:2013-04-23 06:53:30

标签: r save workflow

我需要为后验分布运行非常耗时的近似。因此,我希望将参数的样本保存在R之外以供将来分析。

我的样本采用矩阵和向量的形式(每个元素都来自一次模拟)。有没有办法将这些矩阵和向量保存到文件中?

相关地,您能否对这些耗时近似的有效工作流程发表评论?我发现自己反复突出显示并运行长码 - 当然有更好的方法来加载,运行,然后保存分析?

非常感谢!

1 个答案:

答案 0 :(得分:1)

Ahn已经为您提供了第一个答案。

saveRDS(obj, "obj.rds")
obj <- readRDS("obj.rds") 

这些命令是R中序列化的基础。

正如Roland所说,您也可以用同样的方式保存和加载整个工作区:

save.image("my_workspace.RData")
load("my_workspace.RData") 

关于工作流程。我强烈建议你习惯用R包装你所做的一切。采取额外的步骤和打包你的工作效率要高得多。

创建包骨架时,通常,数据存储在/extdata/data/obj.rds中,然后在包加载后通过以下方式访问:

obj <- readRDS(paste(path.package('package_name'),"/data/obj.rds"))
# R < 3.0.0 it's .path.package, not path.package

通常,我将所有分析存储为函数。那么这只是运行该功能以获得所需结果的问题。

例如:

#' My Analysis Function
#' 
#' This function does x, y, and z. 
#' 
#' @param obj The name of the object...
#' @export your_analysis_fun

your_analysis_fun <- function(obj="name") {
 obj <- readRDS(paste(path.package('package_name'),"/data/",obj,".rds"))
 # the things you usually copy paste go here
 # ...
 return(results)
}

记录您的代码也很有帮助,我在上面提供了一个简短的例子(Roxygen2)。如果您使用RStudio,只需将Ctrl + Shift + B混搭以构建和重新加载包,然后在进行更改时再次运行您的函数。他们在为包装制定工作流程范例方面做得很好。也建议使用git。

我不能强调记录代码的重要性。一年后回到复杂的分析,如果你没有完成编写文档的尽职调查,就像用棒球棒击打自己。更不用说试图去别人离开的地方了。