Comment supprimer uniquement quelques objets spécifiques de l'espace de travail?


161

Je souhaite supprimer certaines données de l'espace de travail. Je sais que le bouton «Effacer tout» supprimera toutes les données. Cependant, je souhaite supprimer uniquement certaines données.

Par exemple, j'ai ces trames de données dans la section des données:

data
data_1
data_2
data_3

Je souhaite supprimer data_1, data_2et data_3, tout en conservant data.

J'ai essayé data_1 <- data_2 <- data_3 <- NULL, ce qui supprime les données (je pense), mais les garde toujours dans l'espace de travail, donc ce n'est pas tout à fait ce que je voudrais faire.

Réponses:


247

Vous trouverez la réponse en tapant ?rm

rm(data_1, data_2, data_3)

44
Pour supprimer toutes les variables que vous pouvez utiliser rm(list=ls()).
larkee

1
mais comment pouvez-vous faire avec l'interface graphique, sans la ligne de commande? comme dans Revolution R
skan

1
Que faire si je veux supprimer toutes les variables dont les noms commencent par la lettre A, disons «A001», «A002» .... «A999». Je ne veux pas taper autant de noms de variables. Merci!
user3768495

2
Utilisez la réponse de @ mbask (juste en dessous): rm(list = ls()[grep("A", ls())])
Pop

74

Un moyen utile de supprimer tout un ensemble d'objets nommés identiques:

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

supprimant ainsi tous les objets dont le nom commence par la chaîne "tmp".

Edit: Suite au commentaire de Gsee, en utilisant l' patternargument:

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

Edit: En réponse au commentaire de Rafael, une façon de ne conserver qu'un sous-ensemble d'objets est de nommer les données que vous souhaitez conserver avec un modèle spécifique. Par exemple, si vous souhaitez supprimer tous les objets dont le nom ne commence pas par, papervous exécutez la commande suivante:

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

7
lsaccepte un patternargument, vous pouvez donc simplifier cela àrm(list=ls(pattern="^tmp"))
GSee

1
Séparément, vérifiez ce qui se passe lorsque vous utilisez value=TRUEavec grep... pourrait vous faire gagner du temps.
GSee

Salut, existe-t-il un moyen de conserver quelques données et de supprimer les autres (une plus grande quantité)? Cheers
Rafael

1
Salut! Et comment pourrais-je conserver dans mon environnement R deux modèles différents? J'ai essayé "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Est-ce que quelqu'un sait?
Dekike

1
Vous devez inclure votre expression régulière dans l' patternargument de grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

La commande suivante fera l'affaire

rm(list=ls(all=TRUE))

2
Cela supprimera tout de l'espace de travail, non seulement data1, data2et data3(c. -à- dataseront supprimés aussi). Ce qui est bien si c'est ce que vous voulez ...
Phil

2
Et si l'on veut supprimer uniquement des données, pas des fonctions, des valeurs ou d'autres objets dans, par exemple, l'environnement global?
Nikos Alexandris

8

Utilisez la commande suivante

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

6

Vous pouvez utiliser la aproposfonction qui est utilisée pour trouver les objets en utilisant le nom partiel.

rm(list = apropos("data_"))

3

Si vous souhaitez simplement supprimer l'une d'un groupe de variables, vous pouvez créer une liste et ne conserver que la variable dont vous avez besoin. La fonction rm peut être utilisée pour supprimer toutes les variables à l'exception des "données". Voici le script:

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

Si vous utilisez RStudio, envisagez de ne jamais utiliser l' rm(list = ls())approche! * Au lieu de cela, vous devez créer votre flux de travail en utilisant fréquemment le Ctrl+ Shift+F10 raccourci pour redémarrer votre session R. C'est le moyen le plus rapide de détruire à la fois le jeu actuel de variables définies par l'utilisateur ET d'effacer les paquets chargés, les périphériques, etc. La reproductibilité de votre travail augmentera considérablement en adoptant cette habitude.

Voir cet excellent fil de sur la communauté Rstudio pour (h / t @kierisi) pour une discussion plus approfondie (l'essentiel est capturé par ce que j'ai déjà dit).

Je dois admettre que mes propres premières années de codage R ont présenté un script après un script commençant par le rm"truc" - j'écris cette réponse comme un conseil à quiconque pourrait commencer sa carrière en R.

* Bien sûr, il existe des utilisations légitimes pour cela - un peu comme attach- mais les utilisateurs débutants seront beaucoup mieux servis (IMO) en traversant ce pont à une date ultérieure.


3
  1. Dans RStudio, assurez-vous que l' Environmentonglet est en mode Grid(non List).

  2. Cochez le ou les objets que vous souhaitez supprimer de l'environnement.

  3. Cliquez sur l'icône du balai.


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

Pour effacer toutes les données:

cliquez sur Misc>Remove all objects.

Vous êtes prêt à partir.

Pour effacer la console:

cliquez sur edit>Clear console.

Pas besoin de code.


1
Bien que je devais le faire Session> Clear Workspace....
Peter K.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.