Comment enregistrer toutes les sorties de la console dans un fichier R?

Je veux redirect tout le texte de la console vers un fichier. Voici ce que j’ai essayé:

> sink("test.log", type=c("output", "message")) > a  a > How come I do not see this in log Error: unexpected symbol in "How come" 

Voici ce que j’ai eu dans test.log:

 [1] "a" 

Voici ce que je veux dans test.log:

 > a  a [1] "a" > How come I do not see this in log Error: unexpected symbol in "How come" 

Qu’est-ce que je fais mal? Merci!

Vous devez séparer “sortie” et “message” séparément (la fonction sink ne regarde que le premier élément de type )

Maintenant, si vous souhaitez que l’ entrée soit également enregistrée, placez-la dans un script:

script.R

 1:5 + 1:3 # prints and gives a warning stop("foo") # an error 

Et à l’invite:

 con <- file("test.log") sink(con, append=TRUE) sink(con, append=TRUE, type="message") # This will echo all input and not truncate 150+ character lines... source("script.R", echo=TRUE, max.deparse.length=10000) # Restore output to console sink() sink(type="message") # And look at the log... cat(readLines("test.log"), sep="\n") 

Si vous avez access à une ligne de commande, vous pouvez préférer exécuter votre script depuis la ligne de commande avec R CMD BATCH.

== début du contenu du script.R ==

 a <- "a" a How come I do not see this in log 

== contenu de fin du script.R ==

À l'invite de commande ("$" dans de nombreuses variantes un * x, "C:>" dans Windows), exécutez

 $ R CMD BATCH script.R & 

Le "&" final est facultatif et exécute la commande en arrière-plan. Le nom par défaut du fichier journal a été ajouté à l'extension, c'est-à-dire script.Rout.

== début du contenu du script.Rout ==

 R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redissortingbute it under certain conditions. Type 'license()' or 'licence()' for dissortingbution details. Natural language support but running in an English locale R is a collaborative project with many consortingbutors. Type 'consortingbutors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. [Previously saved workspace restored] > a <- "a" > a [1] "a" > How come I do not see this in log Error: unexpected symbol in "How come" Execution halted 

== contenu final du script.Rout ==

Vous ne pouvez pas Au maximum, vous pouvez enregistrer la sortie avec le savehistory et l’entrée avec la savehistory séparément. Ou utilisez un outil externe tel que script , screen ou tmux .

Exécutez R dans emacs avec ESS (Emacs Speaks Statistics) r-mode. J’ai une fenêtre ouverte avec mon script et mon code R. Un autre a R en cours d’exécution. Le code est envoyé depuis la fenêtre de syntaxe et évalué. Les commandes, les sorties, les erreurs et les avertissements apparaissent tous dans la session en cours de la fenêtre R. À la fin d’une période de travail, j’enregistre toutes les sorties dans un fichier. Mon propre système de nommage est * .R pour les scripts et * .Rout pour enregistrer les fichiers de sortie. Voici une capture d’écran avec un exemple. Capture d'écriture et évaluation de R avec Emacs / ESS.

Si vous pouvez utiliser le shell bash, vous pouvez envisager d’exécuter simplement le code R à partir d’un script bash et de redirect les stream stdout et stderr vers un fichier. Voici un exemple utilisant un heredoc:

Fichier: test.sh

 #!/bin/bash # this is a bash script echo "Hello World, this is bash" test1=$(echo "This is a test") echo "Here is some R code:" Rscript --slave --no-save --no-restore - "$test1" < 

Ensuite, lorsque vous exécutez le script avec stderr et stdout dans un fichier journal:

 $ chmod +x test.sh $ ./test.sh $ ./test.sh &>test.log $ cat test.log Hello World, this is bash Here is some R code: Hello World, this is R This is a message from bash: This is a test 

D'autres choses à examiner seraient d'essayer simplement d'insérer les stdout et stderr directement depuis le répertoire R dans un fichier journal; Je n'ai pas encore essayé mais cela fonctionnera probablement aussi.

Pour enregistrer du texte depuis la console: exécutez l’parsing, puis choisissez (Windows) “Fichier> Enregistrer dans un fichier”.