我想将“sessionInfo()”的输出保存到文本文件。使用“write()”失败,因为“list()不能被”cat()“处理。然后我尝试使用ascii = T的“save()”,但结果文件没有什么帮助。我想在文本文件中输出like this。有简单直接的方法吗?
368yc8dk1#
将屏幕输出捕获到字符向量中并使用writeLines。
writeLines
writeLines(capture.output(sessionInfo()), "sessionInfo.txt")
kb5ga3dv2#
‘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
62o28rlo3#
您可能希望使用devtools包中的session_info()。在这种情况下,您可以使用sink(),如此处的答案之一所述,或者您可以使用以下代码来获得标头,使其更易于理解(因为print(session_info())使用message()来显示标头):
devtools
session_info()
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(t(data.frame(my_session_info$platform)), col.names = "value"), collapse = "\n"), paste0(rep(" ", 80), collapse = ""), # some separator paste0(rep(" ", 80), collapse = ""), # some separator 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) ]
library(devtools)
unftdfkk4#
如前所述,您可以使用devtools::session_info()获得一个更容易处理的对象,然后使用yaml::write_yaml()(或者jsonlite::write_json())将该对象写入机器可读 * 和 * 人类可读版本。
devtools::session_info()
yaml::write_yaml()
jsonlite::write_json()
library(magrittr) library(devtools) library(yaml) session_info() %>% write_yaml("./path/to/file.yaml")
bvuwiixz5#
看起来我们不需要writeLines(),因为我们可以直接指定要捕获的输出文件。output()函数。
sessionInfo() %>% capture.output(file="session_info.txt")
5条答案
按热度按时间368yc8dk1#
将屏幕输出捕获到字符向量中并使用
writeLines
。kb5ga3dv2#
sessionInfo.txt:
62o28rlo3#
您可能希望使用
devtools
包中的session_info()
。在这种情况下,您可以使用sink()
,如此处的答案之一所述,或者您可以使用以下代码来获得标头,使其更易于理解(因为print(session_info())
使用message()
来显示标头):[ p.s记住
library(devtools)
]unftdfkk4#
如前所述,您可以使用
devtools::session_info()
获得一个更容易处理的对象,然后使用yaml::write_yaml()
(或者jsonlite::write_json()
)将该对象写入机器可读 * 和 * 人类可读版本。bvuwiixz5#
看起来我们不需要writeLines(),因为我们可以直接指定要捕获的输出文件。output()函数。