¿Cómo deshabilitar "Guardar imagen del espacio de trabajo?" mensaje en R?

92

Cuando salgo del shell R interactivo, muestra un mensaje molesto cada vez:

>
>
¿Guardar imagen del espacio de trabajo? [s / n / c]: n

Siempre respondo "no", porque si quisiera guardar mi trabajo, lo haría antes de intentar salir.

¿Cómo deshacerse del mensaje?


Nota: ver ?save.image

ulidtko
fuente
7
@Spacedman: es Ctrl + Z en Windows, así que nunca intentes "deshacer" nada. ;-)
Joshua Ulrich
3
En GNU / Linux, comienceR --vanilla
aL3xa
vea también esta respuesta usando la q()función personalizada en .Rprofie: stackoverflow.com/a/13043239/180892
Jeromy Anglim
5
por lo que vale, RStudio tiene un gancho de preferencias para esto
Ben Bolker
2
fwiw (también), este es el comportamiento predeterminado en la consola Radian R.
Keith Hughitt

Respuestas:

76

Puede pasar el --no-saveargumento de la línea de comando cuando inicia R, o puede anular la qfunción:

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

Coloque el código anterior en su .Rprofile para que se ejecute al inicio de cada sesión.

Joshua Ulrich
fuente
2
@Sacha Así que echa un vistazo a stackoverflow.com/questions/1189759/…
Marek
2
Después de instalar el paquete Defaults y agregar el código anterior a mi archivo Rprofile.site (que ejecuta R 2.15.1 en Windows 7), aparece el siguiente error: "Error en bindingIsLocked (nombre, as.environment (buscar (nombre)) ): no se pudo encontrar la función 'buscar' "
John D. Cook
2
Al parecer, se ha eliminado el paquete de valores predeterminados.
Praxeolítico
1
Recibo "Error: no se pudo encontrar la función" assignInNamespace "". R 3.1.2 en OS X
Josh Hansen
5
@Josh Hansen agrega biblioteca (utils) a su .Rprofile para encontrar assignInNamespace
FXQuantTrader
31

Todavía no he encontrado la solución Linux más fácil :)

En ubuntu agregue la siguiente línea a su ~/.bashrc:

alias R='R --no-save'

Cada vez que inicie la consola R con R, se le pasará la --no-saveopción.

mreq
fuente
2
O como @ aL3xa especificado en un comentario anterior, use R --vanillapara combinar Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ.
Paul Rougieux
23

Puede escapar del mensaje " ¿Guardar imagen del espacio de trabajo? " Con un Ctrl+D.

Por lo tanto, si lo hace Ctrl+Ddos veces en R interactivo, saldrá de R sin guardar su espacio de trabajo.

(Probado en Linux y OS X)

Hugo Ideler
fuente
11

Si está usando Rgui, haga clic derecho en el icono que usa para iniciar R y haga clic en "Propiedades", y agregue --no-save al comando que inicia R.

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

Si está utilizando un editor diferente a Rgui, debe pasar --no-save a la línea de comando de R al iniciar R

Andrie
fuente
¿Puedes compartir una captura de pantalla de la pestaña de propiedades?
Ashrith
8

Sobrescribir la opción predeterminada para guardar el argumento de la función de salida

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

poner esta línea en .Rprofile

Editar: agregado q, por lo que no hay ningún aviso sin importar qué variante se use

Pafnucy
fuente
> formales (salir) $ guardar <- "no"> q () ¿Guardar imagen del espacio de trabajo? [y / n / c]:
O.rka
5

Puede agregar fácilmente una qq()función al archivo .Rprofile

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

Pensé que la opción de guardar estaba disponible con opciones, pero aparentemente la respuesta de Joshua es la mejor.

IRTFM
fuente
5

Obtenga lo mejor de ambas estrategias proporcionadas por mreq y BondedDust :

Predeterminado para no guardar agregando la siguiente línea a su ~ / .bashrc:

alias R='R --no-save'

Pero date una manera fácil de ahorrar al salir agregando esto a ~ / .Rprofile:

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

Así que ahora se q()cierra sin guardar (o preguntar) pero qs()guardará y saldrá (también sin preguntar)

dedo volador
fuente
3

¿Qué tal simplemente evitar el mensaje escribiendo en su q('no')lugar?

Tacaño
fuente
20
... que es incluso más golpes de teclado que responder al mensaje :-)
TMS
3

Si, como yo, escribir un par de corchetes parece demasiado esfuerzo para salir de la respuesta, puede intentar esto:

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

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

Esto crea una nueva clase, lo que hace que R salga al intentar imprimir dicha clase. El resultado es que si ejecuta exitla respuesta R, todo saldrá (porque intenta imprimirlo).

NB: puede agregarlo ~/.Rprofilepara cargar al inicio de cada sesión.

ventas de aceite de serpiente
fuente
2

Puede crear un alias para el comando R:

usando bash :alias R='R --no-save'

usando csh: alias R 'R --no-save'

mago
fuente
-2

Si se siente lo suficientemente aventurero, también puede editar la startupsección al final de /usr/bin/R, es decir, agregar --no-savea las llamadas ejecutivas. Sin embargo, si necesita guardar su espacio de trabajo, recuerde hacerlo save.image().

Bijoy J
fuente
1
Yo nunca directamente editar cualquier cosa bajo /usr/bin- y fuertemente te impida hacerlo. Esa es el área del sistema, "el personal no autorizado está prohibido".
ulidtko
3
@ulidtko Si es mi sistema, estoy autorizado :) Creo que la verdadera razón por la que esto no es una buena idea es porque se sobrescribirá con futuras actualizaciones.
Michael Mior
@MichaelMior bueno, sí, tienes toda la razón; sin embargo: los humanos se equivocan. Todo el tiempo. Es simplemente una guía; a menos que tenga una buena razón, déjelo /usra los robots (es decir, los administradores de paquetes) ya que ellos ya administran esa área. Hay formas de no interferir. De lo contrario, estás buscando aventuras a propósito.
ulidtko