2012-08-01 19 views
110

Używam programu RStudio i 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.Usuwanie obiektów/danych z obszaru roboczego

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

data 
data_1 
data_2 
data_3 

Chciałbym usunąć „dane_1”, „dane_2” i „data_3” przy jednoczesnym zachowaniu „dane”. Dzieje się tak, ponieważ czytam w data_1, data_2 i data_3, a następnie łączę je, aby utworzyć "dane". Każdy z nich to duże pliki, więc chciałbym je usunąć, aby zwolnić trochę miejsca.

Próbowałem także data_1 <- data_2 <- data_3 <- NULL, który usuwa dane, które myślę, ale nadal utrzymuje go w obszarze roboczym, więc nie jest w pełni to, co chciałbym zrobić.

Myślę, że na to pytanie musi być łatwa odpowiedź, ale nie mogłem jej znaleźć.

Odpowiedz

160

cenie Znajdziesz odpowiedź wpisując ?rm

rm(data_1, data_2, data_3) 
+32

Do usuwania wszystkich zmiennych można użyć 'rm (list = ls())'. – larkee

+0

, ale jak zrobić z GUI, bez linii poleceń? jak w Revolution R – skan

+0

co jeśli chcę usunąć wszystkie zmienne o nazwach zaczynają się od litery A, powiedzmy "A001", "A002" .... "A999". Nie chcę wpisywać tylu nazw zmiennych. Dzięki! – user3768495

51

użyteczny sposób, aby usunąć cały zestaw nazwanych-podobne obiekty:

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

usuwając wszystkie obiekty, których nazwa zaczyna się od ciąg "tmp".

Edycja: Po komentarza GSEE, dzięki czemu korzystanie z pattern argumentu:

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

Edit: Odbieranie Rafael komentarz, jeden sposób, aby zachować tylko podzbiór obiektów jest nazwać dane, które chcesz zachować z określony wzór. Na przykład, jeśli chcesz usunąć wszystkie obiekty, których nazwa nie zaczynaj z paper byś wydać następujące polecenie:

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

'ls' akceptuje argument' wzór', więc możesz uprościć to do ' rm (list = ls (pattern = "^ tmp")) ' – GSee

+1

Oddzielnie, sprawdź, co się stanie, gdy użyjesz' value = TRUE' z 'grep' ... może zaoszczędzić trochę pisania. – GSee

+0

Witam, czy istnieje sposób na zatrzymanie kilku danych i usunięcie pozostałych (większa ilość)? Pozdrawiam – Rafael

2

Aby usunąć wszystkie dane:

kliknij na Misc>Remove all objects.

Dobra robota.

Aby usunąć konsolę:

kliknij na edit>Clear console.

Nie potrzeba żadnego kodu.

+0

Chociaż musiałem zrobić "Session> Clear Workspace ...". –

+0

"Twoje" do zrobienia .... Jak ciężko to może być – Dan

14

następujące polecenie zrobi

rm(list=ls(all=TRUE)) 
+2

Spowoduje to usunięcie wszystkiego z obszaru roboczego, a nie tylko 'data1',' data2' i 'data3' (to znaczy' dane' również zostaną usunięte). Co jest w porządku, jeśli tego chcesz ... – Phil

+1

A jeśli chcesz usunąć tylko dane, a nie funkcje, wartości lub inne obiekty, na przykład w środowisku globalnym? –

4

wystarczy użyć następującego polecenia

remove(list=c("data_1", "data_2", "data_3")) 
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 
2

Jeśli chcesz tylko usunąć jeden z grupy zmiennych, można utworzyć listę i zachowaj tylko potrzebną zmienną. Funkcja rm może być użyta do usunięcia wszystkich zmiennych oprócz "danych".Oto scenariusz:

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() 
1

Można użyć funkcji apropos który jest używany, aby znaleźć obiekty przy użyciu fragmentu nazwy.

rm(list = apropos("data_")) 
+0

Witamy w Stack Overflow! :) Właśnie zmieniłem twój post z drobnymi zmianami formatowania, aby podświetlić kod. Sprawdź https://stackoverflow.com/editing-help, aby uzyskać więcej informacji o tym, jak działa formatowanie. – CullenJ

1

Jeśli używasz RStudio, należy rozważyć nigdy stosując podejście rm(list = ls())! * Zamiast tego, należy zbudować obieg wokół często stosujący Ctrl + Shift + F10 skrótu, aby ponownie uruchomić sesję R. Jest to najszybszy sposób zarówno na nukeowanie bieżącego zestawu zdefiniowanych przez użytkownika zmiennych ORAZ w celu wyczyszczenia załadowanych paczek, urządzeń itd. Odtwarzalność znacznie wzrośnie, przyjmując ten nawyk.

Zobacz na this excellent thread na społeczność Rstudio dla (h/t @kierisi), aby uzyskać bardziej szczegółową dyskusję (główna treść jest przechwytywana przez to, co już napisałem).

Muszę przyznać, że kilka pierwszych lat kodowania R zawierał opis skryptu rozpoczynającego się od "sztuczki" rm - Piszę tę odpowiedź jako poradę dla każdego, kto rozpoczyna karierę R.

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

Powiązane problemy