Jak mogę usunąć wszystkie obiekty poza jednym z obszaru roboczego w R?
Mam przestrzeń roboczą z wieloma obiektami i chciałbym usunąć wszystkie oprócz jednego. Najlepiej by było, gdybym nie musiał wpisywać rm(obj.1, obj.2... obj.n)
. Czy można wskazać remove all objects but these ones
?
13 answers
Oto prosta konstrukcja, która to zrobi, używając setdiff
:
rm(list=setdiff(ls(), "x"))
I pełny przykład. Uruchom to na własne ryzyko-usunie wszystkie zmienne z wyjątkiem x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 16:01:17
Używanie funkcji keep
z pakietu gdata
jest dość wygodne.
> 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"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-26 13:04:09
Myślę, że kolejną opcją jest otwarcie obszaru roboczego w RStudio, a następnie zmiana listy na grid w prawym górnym rogu środowiska(obrazek poniżej). Następnie zaznacz obiekty, które chcesz wyczyścić, a na koniec kliknij Wyczyść.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 02:35:24
Aby zachować wszystkie obiekty, których nazwy pasują do wzorca, możesz użyć grep
, w następujący sposób:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-31 16:03:46
Zastąp v
nazwą obiektu, który chcesz zachować
rm(list=(ls()[ls()!="v"]))
Końcówka kapelusza: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-05 12:15:54
Właśnie spędziłem kilka godzin szukając odpowiedzi na podobne, ale nieco inne pytanie - musiałem być w stanie usunąć wszystkie obiekty w R (w tym funkcje) z wyjątkiem garstki wektorów.
Jeden sposób, aby to zrobić:
rm(list=ls()[! ls() %in% c("a","c")])
Gdzie wektory, które chcę zachować, noszą nazwy " a " i "c".
Mam nadzieję, że pomoże to każdemu, kto szuka tego samego rozwiązania!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 22:27:51
Wykorzystuje To opcję ls()
's pattern
, w przypadku gdy masz wiele obiektów o tym samym wzorze, których nie chcesz zachować:
> 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"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-11 13:33:09
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-26 22:32:48
Z wewnątrz funkcji, rm wszystkie obiekty w .GlobalEnv z wyjątkiem funkcji
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-05 19:17:04
Co ty na to?
# 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)
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 21:30:36
Zakładając, że chcesz usunąć wszystkie obiekty poza df ze środowiska:
rm(list = ls(pattern="[^df]"))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 13:20:18
Pomyślmy inaczej, co jeśli chcemy usunąć grupę? spróbuj tego,
rm(list=ls()[grep("xxx",ls())])
Osobiście nie lubię zbyt wielu tabel, zmiennych na ekranie, ale nie mogę ich uniknąć. Więc nazywam tymczasowe rzeczy zaczynając od "xxx", więc mogę je usunąć po tym, jak nie jest już używany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-15 07:04:08
Poniższe spowoduje usunięcie wszystkich obiektów z konsoli
rm(list = ls())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 11:12:29