web-dev-qa-db-fra.com

Comment désactiver "Enregistrer l'image de l'espace de travail?" Demander dans R?

Lorsque je quitte le shell interactif R, il affiche une invite ennuyeuse à chaque fois:

> 
> 
 Enregistrer l'image de l'espace de travail? [o/n/c]: n 

Je réponds toujours "non" à cela, parce que si je voulais sauvegarder mon travail, je le ferais avant en essayant de quitter.

Comment se débarrasser de l'invite?


Remarque: voir ?save.image

90
ulidtko

Vous pouvez passer le --no-save argument de ligne de commande lorsque vous démarrez R, ou vous pouvez remplacer la fonction q:

utils::assignInNamespace(
  "q", 
  function(save = "no", status = 0, runLast = TRUE) 
  {
    .Internal(quit(save, status, runLast))
  }, 
  "base"
)

Mettez le code ci-dessus dans votre .Rprofile afin qu'il soit exécuté au démarrage pour chaque session.

75
Joshua Ulrich

Je n'ai pas encore trouvé la solution Linux la plus simple :)

Sur ubuntu, ajoutez la ligne suivante à votre ~/.bashrc:

alias R='R --no-save'

Chaque fois que vous démarrez la console R avec R, elle passe le --no-save option.

29
mreq

Vous pouvez échapper à l'invite "Enregistrer l'image de l'espace de travail?" avec un Ctrl+D.

Ainsi, si vous le faites Ctrl+D deux fois dans R interactif, puis vous quittez R sans enregistrer votre espace de travail.

(Testé sous Linux et OS X)

18
Hugo Ideler

Si vous utilisez Rgui, faites un clic droit sur l'icône que vous utilisez pour démarrer R et cliquez sur "Propriétés", et ajoutez --no-save à la commande qui démarre R.

(à partir de http://tolstoy.newcastle.edu.au/R/help/05/03/1115.html )

Si vous utilisez un éditeur différent de Rgui, vous devez passer --no-save à la ligne de commande R lors du démarrage de R

11
Andrie

Écraser l'option par défaut pour la fonction save de la fonction quit

formals(quit)$save <- formals(q)$save <- "no"

mettre cette ligne dans .Rprofile

Edit: ajouté q, donc il n'y a pas d'invite quelle que soit la variante utilisée

7
Pafnucy

Vous pouvez facilement ajouter une fonction qq() au fichier .Rprofile

 qq <- function(save="no") { q(save=save)}

Je pensais que l'option d'enregistrement était disponible avec des options, mais apparemment, la réponse de Joshua est la meilleure.

6
42-

Obtenez le meilleur des deux stratégies données par mreq et BondedDust :

Par défaut pour ne pas enregistrer en ajoutant la ligne suivante à votre ~/.bashrc:

alias R='R --no-save'

Mais donnez-vous un moyen simple d'économiser à la sortie en l'ajoutant à ~/.Rprofile:

qs <- function(save="yes") { q(save=save)}

Alors maintenant, q() se ferme sans enregistrer (ni invite) mais qs() va enregistrer et quitter (également sans invite)

5
flyingfinger

Si, comme moi, taper toute une paire de parenthèses semble trop d'effort pour quitter la repl, vous pouvez essayer ceci:

exit <- structure(list(), class = "exit_command")

print.exit_command <- function(...) {
  q("no")  # exit without saving
}

Cela crée une nouvelle classe, ce qui provoque la sortie de R lors de la tentative d'impression de ladite classe. Le résultat étant que si vous exécutez exit dans la réponse R, le tout se fermera (car il essaie de l'imprimer).

NB: vous pouvez l'ajouter à ~/.Rprofile à charger au début de chaque session.

3
snakeoilsales

Que diriez-vous simplement d'éviter l'invite en tapant q('no') à la place

3
Stedy

Vous pouvez créer un alias pour la commande R:

en utilisant bash: alias R='R --no-save'

en utilisant csh:alias R 'R --no-save'

3
wizmer