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。
我不能足够强调记录您的代码的重要性。如果您没有尽职尽责地编写文档,一年后回到复杂的分析就像用棒球棒打自己的脸。更不用说试图从别人停下来的地方接起。