Как написать "читаемый" sessionInfo() в текстовый файл

Я хотел бы сохранить вывод "sessionInfo()" в текстовый файл. Использование "write()" не удалось, потому что "list() не может обрабатываться" cat() ". Затем я попробовал" save()" с ascii = T, но полученный файл не очень полезен.

Я хотел бы иметь выходной файл как этот в текстовом файле. Любой простой, простой способ сделать это?

Ответы

Ответ 1

Захват вывода экрана в вектор символа и использование writeLines.

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

Ответ 2

‘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 

Ответ 3

Возможно, вы захотите использовать session_info() из пакета devtools. В этом случае вы используете sink(), как описано в одном из ответов здесь, или вы можете использовать следующие заголовки и сделать его более понятным (поскольку print(session_info()) использовать message() для отображения заголовка):

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

[p.s Запомните library(devtools)]