以是不是存在为条件保存 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=...)
和一个字符向量intersect
ing 与您想要的变量一起使用。例如:
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 对象的主要内容,如果未能解决你的问题,请参考以下文章