Réponses:
Voici une construction simple qui le fera, en utilisant setdiff
:
rm(list=setdiff(ls(), "x"))
Et un exemple complet. Exécutez cela à 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"
L'utilisation de la keep
fonction du gdata
package est assez 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 est d'ouvrir l'espace de travail dans RStudio puis de changer la liste en grille en haut à droite de l'environnement (image ci-dessous). Cochez ensuite les objets que vous souhaitez effacer et enfin cliquez sur effacer.
Je viens de passer plusieurs heures à chercher la réponse à une question similaire mais légèrement différente - j'avais besoin de pouvoir supprimer tous les objets dans R (y compris les fonctions) à l'exception d'une poignée de vecteurs.
Une façon de procéder:
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 toute personne recherchant la même solution!
rm(list=setdiff(ls(), c("a", "c")))
, non? Voir la réponse de @ Andrie.
Pour conserver tous les objets dont les noms correspondent à un motif, 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'objet que vous souhaitez conserver
rm(list=(ls()[ls()!="v"]))
pointe du chapeau: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Cela profite de ls()
l' pattern
option de, dans le cas où vous avez beaucoup d'objets 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"
rm
fonction doit toujours être utilisée avec précaution (plus encore dans le shell!). Voir ma modification pour une réponse à votre question.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
réfléchissons différemment, que se passe-t-il si nous voulons supprimer un groupe? essaye ça,
rm(list=ls()[grep("xxx",ls())])
Personnellement, je n'aime pas trop de tableaux, de variables sur mon écran, mais je ne peux pas éviter de les utiliser. Je nomme donc les éléments temporaires commençant par "xxx", afin de pouvoir les supprimer une fois qu'ils ne sont plus utilisés.
À partir d'une fonction, rm tous les objets 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)
}
}
Ce qui suit supprimera tous les objets de votre console
rm(list = ls())