R调用哪个函数将输出打印到控制台(例如sessionInfo)?

时间:2017-11-15 07:10:40

标签: r

我试图将sessionInfo的漂亮打印(格式化)输出存储在一个字符变量中,并找到了一个使用pretty.si <-capture.output(sessionInfo())的解决方案,这会产生一个字符串向量(每行一个元素) )。

出于好奇:

R调用哪个函数来获得漂亮的打印输出(例如,我找不到S3 print.sessionInfo函数)?

如果我查看sessionInfo的实现,它只会将未格式化的结果作为列表或向量列表返回:

> sessionInfo
function (package = NULL) 
{
    z <- list()
    z$R.version <- R.Version()
    z$platform <- z$R.version$platform
    # ... omitted code ...
    class(z) <- "sessionInfo"
    z
}

编辑1:BTW - 要创建来自sessionInfo()的漂亮打印字符串,您可以使用:

si <- capture.output(print(sessionInfo()))

1 个答案:

答案 0 :(得分:3)

它实际上有一个S3方法,它只是不从包名称空间导出,而是utils包。

如果查看方法搜索的输出,您将在sessionInfo方法旁边看到一个星号,文档中说明:

  

如果是方法,则S3方法名称后面跟一个星号*   定义不是从包名称空间中导出的   方法已定义。

> x = methods("print")
> x[x == "print.sessionInfo"]
[1] "print.sessionInfo"

因此要查看您可以执行的方法的代码

utils:::print.sessionInfo