¿Cómo guardar todos los resultados de la consola en el archivo en R?

Quiero redirigir todo el texto de la consola a un archivo. Esto es lo que intenté:

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

Esto es lo que obtuve en test.log:

 [1] "a" 

Esto es lo que quiero en test.log:

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

¿Qué estoy haciendo mal? ¡Gracias!

Tienes que hundir “output” y “message” por separado (la función sink solo mira el primer elemento de type )

Ahora, si desea que la entrada también se registre, póngala en un script:

script.R

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

Y en el aviso:

 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 tiene acceso a una línea de comando, puede preferir ejecutar su script desde la línea de comando con R CMD BATCH.

== comienza el contenido de script.R ==

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

== contenido final de script.R ==

En el símbolo del sistema ("$" en muchas variantes de un * x, "C:>" en Windows), ejecute

 $ R CMD BATCH script.R & 

El "y" final es opcional y ejecuta el comando en segundo plano. El nombre predeterminado del archivo de registro tiene "fuera" adjuntado a la extensión, es decir, script.Rout

== comienza el contenido de 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 redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' 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 restred] > a <- "a" > a [1] "a" > How come I do not see this in log Error: unexpected symbol in "How come" Execution halted 

== contenido final de script.Rout ==

No puedes. Como máximo, puede guardar la salida con sink e ingresar con savehistory separado. O use una herramienta externa como script , screen o tmux .

Ejecute R en emacs con ESS (Emacs Speaks Statistics) r-mode. Tengo una ventana abierta con mi script y el código R. Otro tiene R funcionando. El código se envía desde la ventana de syntax y se evalúa. Comandos, resultados, errores y advertencias aparecen todos en la sesión de la ventana R en ejecución. Al final de un período de trabajo, guardo todo el resultado en un archivo. Mi propio sistema de nombres es * .R para scripts y * .Rout para guardar archivos de salida. Aquí hay una captura de pantalla con un ejemplo. Captura de pantalla y evaluación de R con Emacs / ESS.

Si puede usar el shell bash, puede considerar simplemente ejecutar el código R desde un script bash y conectar las secuencias stdout y stderr a un archivo. Aquí hay un ejemplo usando un heredoc:

Archivo: 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-restre - "$test1" < 

Luego, cuando ejecuta el script con stderr y stdout canalizados a un archivo de registro:

 $ 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 

Otras cosas a tener en cuenta para esto sería tratar de simplemente extraer el stdout y el stderr directamente del R heredoc en un archivo de registro; No he intentado esto todavía, pero probablemente también funcionará.

Para guardar texto desde la consola: ejecute el análisis y luego elija (Windows) “Archivo> Guardar en archivo”.