有没有办法在RStudio中禁用环境窗格?
简介: 我有一个RStudio项目,我正在研究(相当)大数据集。虽然我在努力保持全球环境清洁,但过了一段时间,它就会被巨大的物体填满 问题: RStudio总是在调试后刷新环境窗格(可能会迭代全局环境,并对每个对象调用有没有办法在RStudio中禁用环境窗格?,r,rstudio,R,Rstudio,简介: 我有一个RStudio项目,我正在研究(相当)大数据集。虽然我在努力保持全球环境清洁,但过了一段时间,它就会被巨大的物体填满 问题: RStudio总是在调试后刷新环境窗格(可能会迭代全局环境,并对每个对象调用summary()),在我的全局环境中需要数十秒。尽管刷新本身是异步的,但R会话很忙,您必须等待它完成后才能继续工作。这使得调试非常烦人。据我所知,没有办法在RStudio中禁用环境窗格 问题: 有人能提出一些漂亮的解决办法吗?我认为有以下可能: 自定义RStudio源以添加禁用环
summary()
),在我的全局环境中需要数十秒。尽管刷新本身是异步的,但R会话很忙,您必须等待它完成后才能继续工作。这使得调试非常烦人。据我所知,没有办法在RStudio中禁用环境窗格
问题:
有人能提出一些漂亮的解决办法吗?我认为有以下可能:
不久前,我已经就这个问题向RStudio技术支持发送了电子邮件,但还没有得到任何答复 我可以用许多嵌套的小列表变量重现这个问题
# Populate global environment with lots of nested list variables
invisible(
replicate(
1000,
assign(
paste0(sample(letters, 10, replace = TRUE), collapse = ""),
list(a = 1, b = list(ba = 2.1, bb = list(bba = 2.21, bbb = 2.22))),
envir = globalenv()
)
)
)
f <- function() browser()
f() # hit ENTER in the console once you hit the browser
然后将所有结果分配到
e
中。这样,刷新只需几微秒。虽然RStudio的公共版本尚未提供,但RStudio的v1.3允许您禁用环境窗格的自动更新:
选择“仅手动刷新”将禁用“环境”窗格的自动刷新。请添加更多详细信息以重现此操作。你是如何调试的?当您有几个大对象(问题是内存,或者可能是读取对象)或许多小对象(问题是获取对象的结构)时,会发生这种情况吗?如果环境窗格被隐藏(也就是说,您正在查看历史记录或构建窗格),这会有区别吗?我正在RStudio中的任意代码行上设置断点,启动脚本/函数-在断点上停止执行,然后按“停止”或“继续”按钮,执行完成并“刷新”GIF显示在环境窗格的顶部,在此期间,R命令均不工作,RSession.exe进程占用100%的CPU(单核)。因此,我认为这与记忆无关。我试图折叠环境窗格,但没有任何效果,我认为它无论如何都会刷新。我的环境包含大约数百个对象,其中一些是大xts、大列表(列表)、大矩阵。请在此处添加对禁用选项的支持:太好了,代码重现了这个问题!请注意,环境窗格刷新约7秒(在我的i5 4670上),但
ls
可以立即工作。我认为这是一个明显的RStudio问题。1000张名单真的可以被视为全球大环境吗?我深入研究了RStudio源代码,不,环境窗格不使用工具中的任何函数:RStudio,它通过许多包装器在RSession进程内部调用R的ls
,然后迭代结果。所以我认为答案是否定的,如果不更改RStudio代码,就无法禁用环境窗格。@CyberJ0G1000变量听起来确实很多。正如我在回答中所说的,如果您在函数中包装代码,那么其中一些应该消失。使用不同的数据结构可能会更好。也许是一张单子。
e <- new.env(parent = globalenv())