Comment puis-je supprimer tous les objects sauf un de l’espace de travail dans R?

J’ai un espace de travail avec beaucoup d’objects et je voudrais supprimer tous les éléments sauf un. Idéalement, je voudrais éviter d’avoir à taper rm(obj.1, obj.2... obj.n) . Est-il possible d’indiquer remove all objects but these ones ?

Voici une construction simple qui le fera en utilisant setdiff :

 rm(list=setdiff(ls(), "x")) 

Et un exemple complet. Exécuter ceci à vos risques et périls – cela supprimera toutes les variables sauf x :

 x <- 1 y <- 2 z <- 3 ls() [1] "x" "y" "z" rm(list=setdiff(ls(), "x")) ls() [1] "x" 

Utiliser la fonction gdata paquet gdata est très pratique.

 > 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" 

Je pense qu’une autre option consiste à ouvrir l’espace de travail dans RStudio, puis à modifier la liste en grid en haut à droite de l’environnement (image ci-dessous). Cochez ensuite les objects que vous souhaitez effacer et enfin cliquez sur Effacer.

entrer la description de l'image ici

Pour conserver tous les objects dont les noms correspondent à un modèle, vous pouvez utiliser grep , comme ceci:

 to.remove <- ls() to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove") rm(list=to.remove) 

Remplacez v par le nom de l’object que vous souhaitez conserver

 rm(list=(ls()[ls()!="v"])) 

hat-tip: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html

Je viens de passer plusieurs heures à chercher la réponse à une question similaire mais légèrement différente. Je devais pouvoir supprimer tous les objects de R (y compris les fonctions), à l’exception d’une poignée de vecteurs.

Une façon de le faire:

 rm(list=ls()[! ls() %in% c("a","c")]) 

Où les vecteurs que je veux garder sont nommés ‘a’ et ‘c’.

J’espère que cela aidera ceux qui recherchent la même solution!

Cela profite de l’option de pattern de ls() , dans le cas où vous avez beaucoup d’objects avec le même motif que vous ne voulez pas conserver:

 > 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" 
 require(gdata) keep(object_1,...,object_n,sure=TRUE) ls() 

A partir d’une fonction, rm tous les objects dans .GlobalEnv sauf la fonction

 initialize <- function(country.name) { if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) { rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv) } } 

Que dis-tu de ça?

 # 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) } 

en supposant que vous voulez supprimer tous les objects sauf df de l’environnement:

 rm(list = ls(pattern="[^df]")) 

pensons différemment, et si on veut supprimer un groupe? essaye ça,

  rm(list=ls()[grep("xxx",ls())]) 

Personnellement, je n’aime pas trop de tables, de variables sur mon écran, mais je ne peux pas éviter de les utiliser. Donc, je nomme les choses temporaires commençant par “xxx”, donc je peux les supprimer une fois qu’il n’est plus utilisé.

Ce qui suit va supprimer tous les objects de votre console

 rm(list = ls())