7
votes

Sauvegarder et charger l'historique automatiquement

J'utilise le logiciel R pour une analyse statistique et je suis triste de ne pas préserver et restaurer mon historique de commande rapide. En effet, appuyez sur la flèche Up sur une session interactive R nouvellement démarrée révélera une histoire vierge, à chaque fois. Ce serait génial s'il pouvait faire cela de manière, disons, similaire à iphon . J'ai essayé de mettre cela dans mon .RProfile en vain. Aucun fichier contenant mon historique de commande n'est jamais créé. XXX

Bien sûr, cette ligne est présente dans mon .bash_profile xxx

Tout cela se passe via SSH sur un serveur distant exécutant Linux. Toute aide grandement appréciée!


6 commentaires

Pas vraiment une réponse, mais la plupart des gens, je pense recommander sauver les commandes que vous souhaitez utiliser à nouveau dans un script. Ensuite, vous n'avez pas à wade à travers toute votre histoire pour trouver les quelques commandes que vous souhaitez.


Ouais bien sûr, j'écrirai mon pipeline final dans un script; Mais imaginez d'utiliser quelque chose comme la coquille bash sans préservation de l'histoire entre les sessions, ne seriez-vous pas frustré aussi?


Non, pas vraiment. Je tape les commandes que je veux conserver dans mon script et un pneumatique dans la console. En fait, je suis frustré quand j'oublie de mettre quelque chose que je veux plus tard dans mon script et que je doive tacheter à travers mon histoire pour le trouver.


Vous ne mentionnez pas ce que UI vous utilisez - peut-être essayer RStudio ou similaire?


@hadley Je viens de lancer l'invite R à partir du shell Bash après la connexion à un nœud sur le cluster avec SSH.


Ah, cela clarifie beaucoup sur le type de solutions possibles et pourquoi vous vous souciez de l'histoire. La solution de Hadley travaille-t-elle pour vous?


4 Réponses :


0
votes

Si vous travaillez avec RGUI: sauvegardehistoire () , loadhistory () et historique () pourrait faire le travail. Sinon, je suppose que cela dépend de l'IDE ..


3 commentaires

Je ne suis pas intéressé à sauver ma session pour le moment. Je voulais juste que mon histoire soit préservée. Je n'utilise aucun IDE.


La première réponse était hors sujet, je suis tellement fatiguée


Oui, j'ai identifié le sauvegarde () et Loadhistory () . Je demande comment cela se produira automatiquement à chaque nouvelle création de session.



12
votes

dans mon ~ / .profile code> J'ai: xxx pré>

dans mon ~ / .rprofile code> J'ai: p>

if (interactive()) {
  .Last <- function() try(savehistory("~/.Rhistory"))
}


2 commentaires

Cela ne fonctionne pas pour moi. Il chargera ce qui est jamais dans ~ / .rhistory mais ne sauvegardera pas à la fin de chaque session, à moins que je ne réponde oui à la question de l'image de sauvegarde de l'espace de travail.


@xapple j'ai aussi alias r = 'r -no-sauvegarde - NO-restaurer-data --Quiet' dans mon profil qui élimine les questions sur la fermeture.



0
votes

Vous pourriez envisager EMACS et ESS, qui fonctionnent bien sur SSH et permettent la méthode plus habituelle (et généralement considérée comme plus puissante) de conserver des commandes utiles dans un fichier séparé.


2 commentaires

Pourriez-vous commenter plus sur les inconvénients et les avantages d'utiliser ESS et de donner un didacticiel?


Ce serait une bonne réponse, mais malheureusement plus que je suis prêt à fournir. Ma meilleure réponse est de trouver un collègue amical qui l'utilise et d'aller de là. C'est assez différent de la plupart des programmes «modernes» qui aident une main en personne sont particulièrement utiles.



1
votes

Une alternative au paramètre .Last enregistre un finaliseur pour .globalenv , qui sera exécuté même si la session R est sortie avec EOF ( CTRL < / kbd> + z sous Windows et ctrl + d ailleurs): xxx

Il y a un certain supplément cloches et sifflets ici:

  • invisible () veasse de la valeur de retour de Reg.Finalizer () n'est pas imprimé lorsque r démarre
  • Contrairement à la réponse de Hadley, le fichier .RHistory est enregistré dans le répertoire actuel. eval (bquote (.... (getwd ()) ...)) évalue getwd () pendant le démarrage, de sorte que le répertoire actuel lors du démarrage est utilisé. à la sortie
  • paramètre onexit = true veille à ce que le code est en réalité exécuté

0 commentaires