Come posso cancellare solo alcuni oggetti specifici dallo spazio di lavoro?


161

Vorrei rimuovere alcuni dati dall'area di lavoro. So che il pulsante "Cancella tutto" rimuoverà tutti i dati. Tuttavia, vorrei rimuovere solo alcuni dati.

Ad esempio, ho questi frame di dati nella sezione dati:

data
data_1
data_2
data_3

Vorrei rimuovere data_1, data_2e data_3, pur mantenendo data.

Ho provato data_1 <- data_2 <- data_3 <- NULL, che rimuove i dati (credo), ma li mantiene ancora nell'area di lavoro, quindi non è completamente quello che vorrei fare.

Risposte:


247

Troverai la risposta digitando ?rm

rm(data_1, data_2, data_3)

44
Per cancellare tutte le variabili che puoi usare rm(list=ls()).
larkee,

1
ma come puoi fare con la GUI, senza la riga di comando? come in Revolution R
skan,

1
cosa succede se desidero rimuovere tutte le variabili con nomi che iniziano con la lettera A, dire "A001", "A002" .... "A999". Non voglio digitare così tanti nomi di variabili. Grazie!
user3768495

2
Usa la risposta di @ mbask (appena sotto): rm(list = ls()[grep("A", ls())])
Pop

74

Un modo utile per rimuovere un intero set di oggetti simili:

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

rimuovendo così tutti gli oggetti il ​​cui nome inizia con la stringa "tmp".

Modifica: seguendo il commento di Gsee, usando l' patternargomento:

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

Modifica: rispondendo al commento di Rafael, un modo per conservare solo un sottoinsieme di oggetti è nominare i dati che si desidera conservare con uno schema specifico. Ad esempio, se si desidera rimuovere tutti gli oggetti il ​​cui nome non inizia con papersi immetterà il seguente comando:

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

7
lsaccetta un patternargomento, quindi puoi semplificarlo arm(list=ls(pattern="^tmp"))
GSee

1
Separatamente, controlla cosa succede quando lo usi value=TRUEcon grep... potrebbe salvare qualche digitazione.
GSee,

Ciao, c'è un modo per conservare alcuni dati e rimuoverne gli altri (una quantità maggiore)? Saluti
Rafael,

1
Ciao! E come potrei mantenere nel mio ambiente R due modelli diversi? Ho provato "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Qualcuno sa?
Dekike,

1
Dovresti includere la tua espressione regolare patternnell'argomento di grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

Seguirà il comando seguente

rm(list=ls(all=TRUE))

2
Questa operazione rimuoverà tutto dallo spazio di lavoro, non solo data1, data2e data3(cioè datasaranno rimossi troppo). Il che va bene se è quello che vuoi ...
Phil

2
E se si volessero rimuovere solo dati, non funzioni, valori o altri oggetti, per esempio, nell'ambiente globale?
Nikos Alexandris,

8

Utilizzare il seguente comando

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

6

È possibile utilizzare la aproposfunzione utilizzata per trovare gli oggetti utilizzando il nome parziale.

rm(list = apropos("data_"))

3

Se desideri solo rimuovere uno di un gruppo di variabili, puoi creare un elenco e conservare solo la variabile di cui hai bisogno. La funzione rm può essere utilizzata per rimuovere tutte le variabili tranne "dati". Ecco la sceneggiatura:

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

Se stai usando RStudio, considera di non usare mai l' rm(list = ls())approccio! * Invece, dovresti costruire il tuo flusso di lavoro utilizzando spesso il Ctrl+ Shift+F10 collegamento per riavviare la sessione R. Questo è il modo più veloce sia per eseguire il nuke dell'attuale set di variabili definite dall'utente sia per cancellare pacchetti, dispositivi, ecc. Caricati. La riproducibilità del tuo lavoro aumenterà notevolmente adottando questa abitudine.

Vedi questo eccellente thread sulla comunità di Rstudio per (h / t @kierisi) per una discussione più approfondita (l'essenza principale è catturata da ciò che ho già affermato).

Devo ammettere i miei primi anni di programmazione in codice R in primo piano script dopo script a partire dal rm "trucco" - sto scrivendo questa risposta come consiglio a chiunque possa iniziare la loro carriera in R.

* ovviamente ci sono usi legittimi per questo - molto simili attach- ma agli utenti principianti verrà offerto un servizio molto migliore (IMO) attraversando quel ponte in un secondo momento.


3
  1. In RStudio, assicurarsi che la Environmentscheda sia in modalità Grid(non List).

  2. Spuntare gli oggetti che si desidera rimuovere dall'ambiente.

  3. Fai clic sull'icona della scopa.


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

Per cancellare tutti i dati:

fare clic su Misc>Remove all objects.

Sei a posto.

Per cancellare la console:

fare clic su edit>Clear console.

Non è necessario alcun codice.


1
Anche se dovevo fare Session> Clear Workspace....
Peter K.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.