Come salvare l’output di console in un file in R?

Voglio redirect tutto il testo della console in un file. Ecco cosa ho provato:

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

Ecco cosa ho ottenuto in test.log:

 [1] "a" 

Ecco cosa voglio in test.log:

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

Che cosa sto facendo di sbagliato? Grazie!

    Devi affondare “output” e “messaggio” separatamente (la funzione sink guarda solo il primo elemento di type )

    Ora se vuoi che anche l’ input sia registrato, mettilo in uno script:

    script.R

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

    E al 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 si ha accesso a una riga di comando, è preferibile eseguire lo script dalla riga di comando con R CMD BATCH.

    == inizia il contenuto di script.R ==

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

    == fine contenuto di script.R ==

    Al prompt dei comandi ("$" in molte varianti di un * x, "C:>" in windows), esegui

     $ R CMD BATCH script.R & 

    Il trailing "&" è facoltativo e esegue il comando in background. Il nome predefinito del file di log è "out" aggiunto all'estensione, ad esempio, script.Rout

    == inizia il contenuto di 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 

    == il contenuto finale di script.Rout ==

    Non puoi Al massimo è ansible salvare l’output con sink e input con savehistory separatamente. O utilizzare strumenti esterni come script , screen o tmux .

    Esegui R in emacs con ESS (Emacs Speaks Statistics) in modalità r. Ho una finestra aperta con il mio script e il codice R. Un altro ha R in esecuzione. Il codice viene inviato dalla finestra di syntax e valutato. Comandi, output, errori e avvisi appaiono tutti nella sessione della finestra R in esecuzione. Alla fine di un periodo di lavoro, salverò tutto su un file. Il mio sistema di denominazione è * .R per gli script e * .Rout per salvare i file di output. Ecco uno screenshot con un esempio. Screenshot di scrittura e valutazione di R con Emacs / ESS.

    Se si è in grado di utilizzare la shell bash, è ansible considerare semplicemente l’esecuzione del codice R da uno script bash e il piping dei flussi stdout e stderr su un file. Ecco un esempio utilizzando un heredoc:

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

    Quindi, quando si esegue lo script con stderr e stdout collegati a un file di 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 

    Altre cose da considerare per questo sarebbe provare semplicemente a copiare lo stdout e lo stderr direttamente dal file Rededoc in un file di registro; Non ho ancora provato questo, ma probabilmente funzionerà anche.

    Per salvare il testo dalla console: eseguire l’analisi e quindi scegliere (Windows) “File> Salva su file”.