假设我通过将向量绑定(bind)在一起来处理一些数据,就像我在一个慵懒的周日下午不会做的那样。
x <- rnorm(25, mean = 65, sd = 10)
y <- rnorm(25, mean = 75, sd = 7)
z <- 1:25
dd <- data.frame(mscore = x, vscore = y, caseid = z)
我现在有了新的数据框
dd
,这太棒了。但我之前的切片和切 block 仍然有碎屑: > ls()
[1] "dd" "x" "y" "z"
如果我不再需要我的“源”列,但我想保留数据框,那么清理工作区的简单方法是什么?也就是说,现在我已经完成了对数据的操作,我只想拥有
dd
并且没有可能无意中掩盖进一步分析的较小变量: > ls()
[1] "dd"
我觉得解决方案必须是
rm(ls[ -(dd) ])
的形式什么的,但我不太明白怎么说“请清理除以下对象之外的所有东西”。
最佳答案
我将通过创建一个单独的环境来存储所有垃圾变量来解决此问题,使用 with()
制作您的数据框,然后将要保留的那些复制到主环境中。这具有整洁的优点,但也可以保留所有对象,以防您想再次查看它们。
temp <- new.env()
with(temp, {
x <- rnorm(25, mean = 65, sd = 10)
y <- rnorm(25, mean = 75, sd = 7)
z <- 1:25
dd <- data.frame(mscore = x, vscore = y, caseid = z)
}
)
dd <- with(temp,dd)
这给了你:
> ls()
[1] "dd" "temp"
> with(temp,ls())
[1] "dd" "x" "y" "z"
当然,如果你真的想的话,你可以摆脱垃圾环境。
关于r - 如何在保留某些对象的同时整洁地清理我的 R 工作区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822532/