Jak usunąć tylko kilka określonych obiektów z obszaru roboczego?


161

Chciałbym usunąć niektóre dane z obszaru roboczego. Wiem, że przycisk „Wyczyść wszystko” usunie wszystkie dane. Chciałbym jednak usunąć tylko niektóre dane.

Na przykład mam te ramki danych w sekcji danych:

data
data_1
data_2
data_3

Chciałbym usunąć data_1,data_2 i data_3, przy zachowaniu data.

Próbowałem data_1 <- data_2 <- data_3 <- NULL, co usuwa dane (chyba), ale nadal utrzymuje je w obszarze roboczym, więc nie jest to do końca to, co chciałbym zrobić.

Odpowiedzi:


247

Odpowiedź znajdziesz, wpisując ?rm

rm(data_1, data_2, data_3)

44
Do usunięcia wszystkich zmiennych, których możesz użyć rm(list=ls()).
larkee

1
ale jak można to zrobić z graficznym interfejsem użytkownika bez wiersza poleceń? jak w Revolution R
skan

1
co jeśli chcę usunąć wszystkie zmienne, których nazwy zaczynają się na literę A, powiedz „A001”, „A002”… „A999”. Nie chcę wpisywać tak wielu nazw zmiennych. Dzięki!
user3768495

2
Użyj odpowiedzi @ mbask (tuż poniżej): rm(list = ls()[grep("A", ls())])
Pop,

74

Przydatny sposób na usunięcie całego zestawu obiektów o podobnych nazwach:

rm(list = ls()[grep("^tmp", ls())])

usuwając w ten sposób wszystkie obiekty, których nazwa zaczyna się od łańcucha „tmp”.

Edycja: po komentarzu Gsee, używając patternargumentu:

rm(list = ls(pattern = "^tmp"))

Edycja: Odpowiadając na komentarz Rafaela, jednym ze sposobów zachowania tylko podzbioru obiektów jest nazwanie danych, które chcesz zachować, określonym wzorcem. Na przykład, jeśli chcesz usunąć wszystkie obiekty, których nazwa nie zaczyna się od paper, wydaj następujące polecenie:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))

7
lsprzyjmuje patternargument, więc możesz to uprościć dorm(list=ls(pattern="^tmp"))
GS Zobacz

1
Osobno sprawdź, co się dzieje, gdy używasz value=TRUEz grep... może zaoszczędzić trochę pisania.
GS Zobacz,

Cześć, czy jest sposób, aby zachować kilka danych i usunąć inne (większą ilość)? Pozdrawiam
Rafael

1
Cześć! Jak mogę zachować w środowisku R dwa różne wzorce? Próbowałem "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Czy ktoś wie?
Dekike

1
Powinieneś dołączyć swoje wyrażenie regularne do patternargumentu grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

Następujące polecenie zrobi

rm(list=ls(all=TRUE))

2
Spowoduje to usunięcie wszystkiego z obszaru roboczego, a nie tylko data1, data2oraz data3(tj datazostanie usunięty zbyt). Co jest w porządku, jeśli tego chcesz ...
Phil

2
A jeśli ktoś chce usunąć tylko dane, a nie funkcje, wartości lub inne obiekty, powiedzmy, w środowisku globalnym?
Nikos Alexandris

8

Użyj następującego polecenia

remove(list=c("data_1", "data_2", "data_3"))

6

Możesz użyć aproposfunkcji, która służy do wyszukiwania obiektów za pomocą częściowej nazwy.

rm(list = apropos("data_"))

3

Jeśli chcesz tylko usunąć jedną z grupy zmiennych, możesz utworzyć listę i zachować tylko potrzebną zmienną. Funkcji rm można użyć do usunięcia wszystkich zmiennych z wyjątkiem „danych”. Oto skrypt:

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()

3

Jeśli używasz RStudio, proszę rozważ nigdy nie używać tego rm(list = ls())podejścia! * Zamiast tego powinieneś zbudować swój przepływ pracy wokół częstego używania skrótu Ctrl+ Shift+ F10do ponownego uruchomienia sesji R. Jest to najszybszy sposób zarówno nuke aktualnego zestawu zmiennych zdefiniowanych przez użytkownika ORAZ wyczyszczenia załadowanych pakietów, urządzeń itp. Powtarzalność twojej pracy znacznie wzrośnie, gdy przyjmiesz ten nawyk.

Zobacz ten wspaniały wątek w społeczności Rstudio dla (h / t @kierisi), aby zapoznać się z bardziej szczegółową dyskusją (główny wątek jest uchwycony przez to, co już powiedziałem).

Muszę przyznać, że moje własne pierwsze lata kodowania R zawierały skrypt po skrypcie, zaczynając od rm „sztuczki” - piszę tę odpowiedź jako radę dla każdego, kto może zaczynać swoją karierę w R.

* oczywiście istnieją uzasadnione zastosowania tego - podobnie jak attach- ale początkujący użytkownicy będą znacznie lepiej obsługiwani (IMO) przekraczając ten most w późniejszym terminie.


3
  1. W RStudio upewnij się, że Environmentkarta jest w Grid(nie List) trybie.

  2. Zaznacz obiekt (y), które chcesz usunąć ze środowiska.

  3. Kliknij ikonę miotły.


2
paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3

1

Aby wyczyścić wszystkie dane:

kliknij Misc>Remove all objects.

Jesteś gotowy.

Aby wyczyścić konsolę:

kliknij edit>Clear console.

Nie potrzeba żadnego kodu.


1
Chociaż musiałem to zrobić Session> Clear Workspace....
Peter K.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.