Come disabilitare il prompt “Salva immagine area di lavoro?” In R?

Quando esco dalla shell R intertriggers, visualizza ogni volta un fastidioso prompt:

 >
 >
 Salva l'immagine dell'area di lavoro?  [y / n / c]: n

Rispondo sempre “no” ad esso, perché se volessi salvare il mio lavoro, lo farei prima di tentare di uscire.

Come sbarazzarsi del prompt?


Nota: vedi ?save.image

È ansible passare l’argomento della riga di comando --no-save all’avvio di R, oppure è ansible sovrascrivere la funzione q :

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

Inserisci il codice sopra nel tuo .Rprofile in modo che venga eseguito all’avvio per ogni sessione.

Non ho ancora trovato la soluzione Linux più semplice 🙂

Su ubuntu aggiungi la seguente riga al tuo ~/.bashrc :

 alias R='R --no-save' 

Ogni volta che avvii la console R con R , verrà passata l’opzione --no-save .

Puoi sfuggire al prompt ” Salva immagine area di lavoro? ” Con un Ctrl + D.

Quindi, se fai Ctrl + D due volte in R intertriggers, esci da R senza salvare lo spazio di lavoro.

(Testato su Linux e OS X)

Se si utilizza Rgui, fare clic con il tasto destro sull’icona che si utilizza per avviare R e fare clic su “Proprietà” e aggiungere –no-save al comando che avvia R.

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

Se stai utilizzando un editor diverso da Rgui, devi passare –no-save alla riga di comando R all’avvio di R

Si potrebbe facilmente aggiungere una funzione qq() al file .Rprofile

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

Ho pensato che l'opzione di salvataggio fosse disponibile con le opzioni, ma a quanto pare la risposta di Joshua è la migliore.

Ottieni il meglio da entrambe le strategie fornite da mreq e BondedDust :

Predefinito per non salvare aggiungendo la seguente riga al tuo ~ / .bashrc:

 alias R='R --no-save' 

Ma concediti un modo semplice per risparmiare all’uscita aggiungendo questo a ~ / .Rprofile:

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

Quindi ora q() chiude senza salvare (o chiedere) ma qs() salverà e si chiuderà (anche senza chiedere conferma)

Che ne dici di evitare semplicemente il prompt digitando q('no') invece

Sovrascrivi l’opzione predefinita per l’argomento di salvataggio della funzione di uscita

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

inserisci questa riga in .Rprofile

Modifica: aggiunto q , quindi non vi è alcun prompt, non importa quale variante viene utilizzata

Se, come me, digitando un intero paio di parentesi sembra troppo sforzo per uscire dal repl puoi provare questo:

 exit <- structure(list(), class = "exit_command") print.exit_command <- function(...) { q("no") # exit without saving } 

Questo crea una nuova class, che fa uscire R quando tenta di stampare la suddetta class. Il risultato è che se si esegue exit in R repl, l'intera cosa uscirà (perché tenta di stamparla).

NB: puoi aggiungerlo a ~/.Rprofile per caricarlo all'inizio di ogni sessione.

È ansible creare un alias per il comando R:

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

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

Se ti senti abbastanza avventuroso, puoi anche modificare la sezione di startup alla fine di /usr/bin/R , cioè aggiungere --no-save alle chiamate exec. Tuttavia, se è necessario salvare lo spazio di lavoro, ricordarsi di save.image() .