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
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.
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.
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)
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
É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
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.
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)
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.
Que diriez-vous simplement d'éviter l'invite en tapant q('no')
à la place
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'