【问题标题】:python rpy2 module: refresh global R environmentpython rpy2模块:刷新全局R环境
【发布时间】:2011-11-16 00:08:21
【问题描述】:

rpy2 的文档指出 robjects.r 对象可以访问 R 全局环境。有没有办法将这个全局环境“刷新”到它的初始状态?

我希望能够将全局环境恢复到导入 rpy2.robjects 模块但尚未使用时的状态。通过这种方式,我不必担心长时间运行的作业会出现内存泄漏或其他意外副作用。是的,刷新环境可能会引入不同类别的错误,但我相信这将是一个胜利。

【问题讨论】:

  • 你能说明你想重置什么吗?工作空间中可以更改很多内容,例如对象、加载的包、目录、随机种子、各种环境和配置值。
  • Iterator - 我编辑了这个问题作为回应。谢谢!

标签: r global environment rpy2


【解决方案1】:

按照字面意思理解您的问题,如果您只想清除 .GlobalEnv,只需一行即可:

rm(list = ls(all.names=TRUE))

all.names=TRUE 位是必需的,因为 vanilla ls() 不返回某些对象名称。例如:

x <- rnorm(5)
ls()
# [1] "x"

# Doesn't remove objects with names starting with "."
rm(list=ls())
ls(all.names = TRUE)
# [1] ".Random.seed"

# Removes all objects
rm(list = ls(all.names=TRUE))
ls(all.names = TRUE)
# character(0)   

【讨论】:

  • 这很有帮助。但是,我注意到加载的包仍然加载。有没有什么机制可以“卸载”它们?
  • 当然。例如,如果您加载了 lattice 包,您可以使用 detach("package:lattice")“卸载”它(也称为“从搜索路径中分离”)。除了package(base) 之外,您可以对附加的任何软件包执行相同的操作(尝试search() 来查看它们)。您可能不想分离默认加载的任何包(包括"package:graphics:""package:grDevices")...
【解决方案2】:

R中只有/one/“全局环境”;它在 R 启动时被初始化。正如 Josh 指出的那样,您可以清除其成员,但如果您碰巧需要它,这可能意味着您最好实例化新环境并在它们之间切换或在不再需要时删除它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2019-12-16
    • 2019-01-04
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多