【问题标题】:Which function does R call to print output to console (e. g. for sessionInfo)?R 调用哪个函数来将输出打印到控制台(例如,对于 sessionInfo)?
【发布时间】:2017-11-15 07:10:40
【问题描述】:

我试图将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:顺便说一句 - 要从 sessionInfo() 创建漂亮的打印字符串,您可以使用:

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

【问题讨论】:

    标签: r


    【解决方案1】:

    它确实有一个 S3 方法,只是没有从包命名空间中导出,即 utils 包。

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

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

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

    所以看看你可以做的方法的代码

    utils:::print.sessionInfo
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2014-03-19
    • 2021-06-05
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多