【问题标题】:Save individual selection of global environment to Rdata将全局环境的个别选择保存到 Rdata
【发布时间】:2018-03-11 21:49:58
【问题描述】:

当我们想要将全局环境保存到磁盘时,我们使用save(list = ls(.GlobalEnv), file = "data.Rdata")- 好的。

当需要保存一个特定对象时,我们使用save(data.1, file = "data.Rdata") - bien。

但是当从环境data.1, data.2, data.3 只保存data.1data.2 时该怎么办?

save(c(data.1, data.2), file = "data.Rdata")save(list = ls(data.1, data.2), file = "data.Rdata") 都不起作用。

【问题讨论】:

  • save(data.1, data.2, file = "data.Rdata")save(list=c("data.1", "data.2"), file = "data.Rdata")。从?save(以及使用它们的所有其他函数)开始,...(省略号)是“0 个或多个”参数。对于第二个,它的字面意思是list: A character vector containing the names ...
  • 是的,你说得对,我错过了,谢谢!

标签: r save


【解决方案1】:

有很多方法......也许不是无数的,因为我们“可以”计算它们,但是......

save(data.1, data.2, file = "data.Rdata")

这只会在 rda 文件中保存两个命名的对象。

对于后一种形式,您在给出示例时很接近

save(list = ls(.GlobalEnv), file = "data.Rdata")

注意ls(.GlobalEnv) 返回一个character 向量,这是save 的手册页所说的它所需要的。这应该会触发这个向量可以从ls() 或其他任何创建向量的对象(包括手动)派生的认识:

save(list=c("data.1", "data.2"), file = "data.Rdata")

后一种技术在以编程方式保存变量时非常方便,您可以选择不对变量名称进行硬编码(或变量数量可变)。

当试图解决这个问题时,先尝试嵌套命令,然后再将它们放入 save 中可能会有所帮助。例如,c(data.1, data.2) 只是连接数据对象,这可能有用也可能没用;不管怎样,save 期望 ... 中的对象是符号或对象……但是像 c() 中的派生对象将不起作用。

同样,ls(data.1) 应该给了你类似as.environment(pos): invalid 'pos' argument 的回复,说明你对ls 函数的期望有点不靠谱。

【讨论】:

  • 知道save 以适当的名称保存对象可能很有用。尝试save(c(a,b), file="a.rda") 时,请考虑该变量的名称,因为它既不是a 也不是b。如果给定命名对象,例如上面的第一个示例,它会捕获名称(使用substitute(list(...))),然后在内部获取名称所指的对象。 first 13 lines of the sourcesave 大多是可读的。
猜你喜欢
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2020-08-18
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
相关资源
最近更新 更多