Como salvar toda a saída do console para arquivo em R?

Eu quero redirect todo o texto do console para um arquivo. Aqui está o que eu tentei:

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

Aqui está o que eu recebi no test.log:

 [1] "a" 

Aqui está o que eu quero no test.log:

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

O que estou fazendo de errado? Obrigado!

Você tem que afundar “saída” e “mensagem” separadamente (a function sink só olha para o primeiro elemento do type )

Agora, se você quiser que a input também seja registrada, coloque-a em um script:

script.R

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

E no prompt:

 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") 

Se você tiver access a uma linha de comando, talvez prefira executar seu script a partir da linha de comando com R CMD BATCH.

== começar o conteúdo do script.R ==

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

== conteúdo final do script.R ==

No prompt de comando ("$" em muitas variantes un * x, "C:>" no windows), execute

 $ R CMD BATCH script.R & 

O "&" à direita é opcional e executa o comando em segundo plano. O nome padrão do arquivo de log tem "out" anexado à extensão, ou seja, script.Rout

== começar o conteúdo do 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 restored] > a <- "a" > a [1] "a" > How come I do not see this in log Error: unexpected symbol in "How come" Execution halted 

== conteúdo final do script.Rout ==

Você não pode. No máximo, você pode salvar a saída com o sink e inserir com savehistory separadamente. Ou use ferramentas externas como script , screen ou tmux .

Execute R no emacs com o modo-r do ESS (Emacs Speaks Statistics). Eu tenho uma janela aberta com meu script e código R. Outro tem R correndo. O código é enviado da janela de syntax e avaliado. Comandos, saída, erros e avisos aparecem na session da janela R em execução. No final de algum período de trabalho, salvei toda a saída em um arquivo. Meu próprio sistema de nomenclatura é * .R para scripts e * .Rout para salvar arquivos de saída. Aqui está uma captura de canvas com um exemplo. Screenshot escrevendo e avaliando R com Emacs / ESS.

Se você é capaz de usar o bash shell, você pode considerar simplesmente executar o código R de dentro de um script bash e canalizar os streams stdout e stderr para um arquivo. Aqui está um exemplo usando um heredoc:

Arquivo: 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" < 

Então, quando você executar o script com stderr e stdout canalizado para um arquivo de log:

 $ 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 

Outras coisas para olhar para isso seria tentar simplesmente pipping o stdout e stderr desde o R heredoc em um arquivo de log; Eu não tentei isso ainda, mas provavelmente funcionará também.

Para salvar texto do console: execute a análise e, em seguida, escolha (Windows) “File> Save to File”.