以是不是存在为条件保存 R 对象

Posted

技术标签:

【中文标题】以是不是存在为条件保存 R 对象【英文标题】:Saving R objects conditional on whether they exist以是否存在为条件保存 R 对象 【发布时间】:2021-10-27 16:06:32 【问题描述】:

在分析结束时,我想保存一些 R 环境对象。但是,我重用了这个脚本,有时有些对象不存在。我不想每次都编辑保存语句,所以我希望脚本能够适应对象不存在的情况。不过,我正在努力让它与exist 一起使用。

save(if(exists("object1")) object,
       if(exists("object2")) object2,
       file = "./my_saved_environment/saved_objects.RData")

【问题讨论】:

当对象不存在时,你想要什么?也许,在save 之外使用if,即if(exists("object")) save(object, file = "./my_saved_environment.RData") 这是一个简化的例子,但是有大约 30 个对象可能存在也可能不存在,所以我宁愿避免使用很多 if 语句。如果它不存在,我不希望它尝试保存它! 我在想,如果消息不存在,您是否要返回消息 啊,一个消息会很好,是的,谢谢 【参考方案1】:

save(file=...) 和一个字符向量intersecting 与您想要的变量一起使用。例如:

ls()
# [1] "airquality" "aqm"        "dat"        "mydata"    
intersect(ls(), c("mydata", "quux"))
# [1] "mydata"                                # quux does not exist

save(list = intersect(ls(), c("mydata", "quux")), file = "quux.rda")

如果我们查看.rda 文件,这就是保存的内容:

e <- new.env(parent = emptyenv())
load("quux.rda", envir = e)
ls(envir = e)
# [1] "mydata"

您还可以通过编程方式形成要保存的对象列表,可能使用grep("^mydata.*", ls(), value=TRUE) 或类似方法。

【讨论】:

这很好用,谢谢!

以上是关于以是不是存在为条件保存 R 对象的主要内容,如果未能解决你的问题,请参考以下文章

Django添加Q过滤器以查询相关对象存在时,条件查询

shell条件判断

Cakephp - 条件保存

shell条件测试,运算符,选择结构,for循环结构

gojs的根据条件判断是不是显示控制

有条件地保存辅助表对象