2014-02-23 11 views
17

Ich möchte die Ausgabe von "sessionInfo()" in eine Textdatei speichern. Die Verwendung von "write()" ist fehlgeschlagen, weil "list() nicht von 'cat()' verarbeitet werden kann". Ich versuchte dann "save()" mit ascii = T, aber die resultierende Datei ist nicht wirklich hilfreich.Wie man eine "leserfreundliche" sessionInfo() in die Textdatei schreibt

Ich möchte eine Ausgabe like this in einer Textdatei haben. Jeder einfache, direkte Weg, dies zu tun?

Antwort

21

Erfassen Sie die Bildschirmausgabe in einem Zeichenvektor und verwenden Sie writeLines.

writeLines(capture.output(sessionInfo()), "sessionInfo.txt") 
+1

Ja! Danke - Ich habe jetzt nicht die Funktion capture.output(). – roschu

9
‘sink’ diverts R output to a connection. 


sink("sessionInfo.txt") 
sessionInfo() 
sink() 

sessionInfo.txt:

R version 3.0.2 (2013-09-25) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_US.UTF-8  LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
[7] LC_PAPER=en_US.UTF-8  LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] compiler_3.0.2 tools_3.0.2 
+0

Danke! Funktioniert auch sehr gut. – roschu

3

Sie könnten session_info() vom devtools Paket verwenden möchten. In diesem Fall verwenden Sie sink() wie in einer der Antworten hier erklärt oder Sie können die folgenden haben die Header verwenden und machen es selbsterklärend (seit print(session_info()) Verwendung message() zum Anzeigen des Header):

library("devtools") 
library("knitr") 

my_session_info <- devtools::session_info() 

writeLines(text = { 
    paste(sep = "\n", collapse = "", 
      paste0(rep("-", 80), collapse = ""), 
      paste(paste0(rep("-", 32), collapse = ""), 
       "R environment", 
       paste0(rep("-", 33), collapse = "")), 
      paste0(rep("-", 80), collapse = ""), 
      paste(knitr::kable(data.frame(setting = names(my_session_info$platform), 
            value = as.character(my_session_info$platform))), collapse = "\n"), 
      paste0(rep("-", 80), collapse = ""), 
      paste(paste0(rep("-", 35), collapse = ""), 
       "packages", 
       paste0(rep("-", 35), collapse = "")), 
      paste0(rep("-", 80), collapse = ""), 
      paste(knitr::kable(my_session_info$packages), collapse = "\n") 
     ) 
}, con = "session_info.txt") 

[ ps Erinnere dich an library(devtools)]

+0

+1 für 'devtools :: session_info'. Es ist viel einfacher zu lesen, da es alphabetisiert ist. Es hat auch nette Extras wie den Commit-Hash für Pakete, die von Github oder Bitbucket installiert wurden. –

Verwandte Themen