我有一个有很多对象的工作区,我想删除除一个以外的所有对象。理想情况下,我想避免输入rm(obj.1, obj.2... obj.n)
。是否可以指示remove all objects but these ones
?如何从R中的工作区中删除所有对象?
回答
下面是一个简单的构造,将做到这一点,利用setdiff
:
rm(list=setdiff(ls(), "x"))
而一个完整的例子。需要您自担风险运行这一点 - 它会删除除x
所有变量:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
为了保持其名称匹配的模式中的所有对象,你可以使用grep
,就像这样:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
使用keep
功能来自gdata
包相当方便。
> ls()
[1] "a" "b" "c"
library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"
替换v
你想保留
rm(list=(ls()[ls()!="v"]))
帽尖的物体的名称:http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
从一个函数中,RM在.GlobalEnv的所有对象,除了功能
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
我刚刚花了几个小时寻找一个SIM卡的答案Ilar但略有不同的问题 - 我需要能够删除R中的所有对象(包括函数),除了少数矢量。要做到这一点
方式一:
rm(list=ls()[! ls() %in% c("a","c")])
在哪里,我想保持载体被命名为“A”和“C”。
希望这可以帮助任何人寻找相同的解决方案!
这也应该可以,'rm(list = setdiff(ls(),c(“a”,“c”)))',对不对?看@安德里的答案。 – hplieninger 2014-04-29 10:44:26
我觉得另一种选择是RStudio打开工作区,然后在环境右上方更改列表格(如下图所示)。然后勾选要清除的对象,最后点击清除。
这是明显的赢家。 – Seanosapien 2017-06-14 18:37:13
同样,单击名称框,选择所有文件,然后取消选择要保留的所有文件。 – Stephen 2017-12-27 15:18:50
这需要ls()
的pattern
选项的优势,在情况下,你有很多具有相同模式的对象,你不希望保留的:
> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"
> ls()
[1] "foo1" "foo2" "foo3" "x"
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"
哇,看起来很危险!有没有一种方法来测试在shell中匹配la“echo”的模式? – KennyPeanuts 2014-12-11 11:57:02
我想'rm'函数应该总是小心使用(在shell中更是如此!)。请参阅我的编辑以获得对您问题的回答。 – 2014-12-11 13:29:59
感谢您的编辑。太棒了! – KennyPeanuts 2014-12-11 15:43:06
怎么样这个?
# Removes all objects except the specified & the function itself.
rme <- function(except=NULL){
except = ifelse(is.character(except), except, deparse(substitute(except)))
rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv)
}
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
@Rahul Premraj的副本[回复](http://stackoverflow.com/a/7205040/2563804)。 – hplieninger 2017-03-28 14:03:43
假设你要删除的每个对象除了DF从环境:
rm(list = ls(pattern="[^df]"))
,让我们觉得在不同的方式,如果我们想删除一个组? 试试这个,
rm(list=ls()[grep("xxx",ls())])
我个人不喜欢我的屏幕上太多的表,变量,但我不能避免使用它们。所以我以“xxx”开头的临时事件,所以我可以删除它们不再使用后。
下面将从您的控制台
rm(list = ls())
首先,这不是被问到的。其次,前面的答案已经涵盖了在R中实现这一点的所有可能的方法。非常欢迎您帮助有新问题的其他用户。这个问题已经在6年前解决了,而且这个解决方案今天仍然存在。 – 2017-04-04 11:32:33
- 1. 如何从R工作区中删除所有自定义方法和类?
- 2. 如何从R工作区中删除未被垃圾收集删除的不可见对象?
- 3. 如何删除TFS 2010中的所有工作区
- 4. 如何删除Perforce中的所有工作区
- 5. 如何从TFS中删除从工作副本中删除的所有文件?
- 6. 从UIView中删除所有对象
- 7. 如何从three.js中删除场景中的所有Mesh对象?
- 8. matlab如何遍历工作区中的所有对象
- 9. 如何从RestKit托管对象存储区中删除对象
- 10. 如何从ManagedObjectContext中删除给定实体的所有对象
- 11. 从R环境中删除对象
- 12. 如何从FormApp对象中删除所有项目?
- 13. 如何从数组中删除所有对象?
- 14. iPhone:如何从UIScrollView中删除所有对象
- 15. 如何从Tk Text()对象中删除所有标记
- 16. 删除Parse.com中的所有旧对象
- 17. 从moment.js对象中删除时区
- 18. 如何删除工作区?
- 19. Python/Tkinter - 删除封闭区域中的所有对象
- 20. 在Rails中,如何删除数组中的所有对象?
- 21. ObjectListView - 如何删除所有对象
- 22. 如何删除多对多而不删除关系中的所有对象?
- 23. 从数组中删除所选对象
- 24. Threejs将场景中的所有对象从场景中删除
- 25. 如何从ffdf对象中删除列? (R)
- 26. 如何确定R中当前工作区中所有对象的大小? (不在WIndows中)
- 27. 如何从工作区中删除一个版本的eclipse?
- 28. 如何从数组中删除所选择的对象?
- 29. 如何删除视觉工作室中的#地区及其所有内容
- 30. 如何从jquery中的对象数组中删除对象?
这里所使用的技术是使用列表中删除所有的对象=为RM,它允许一个字符向量将被传递到RM而不是名称的列表。 – Spacedman 2011-05-31 16:14:00
+1 for setdiff() – 2011-05-31 17:43:00