【问题标题】:Abbreviating long R output in knitr在knitr中缩写长R输出
【发布时间】:2014-08-01 11:49:39
【问题描述】:

我记得我在knitr 中看到了一个用于缩写R 输出的钩子。但我忘记了如何完成这项任务。如何显示与ellipses (...) 连接的R 输出的前几行和最后几行。

   \documentclass{article}
    \begin{document}

    << Test >>=
    1:1000
    @
    \end{document}

我找到了这个link,但它对我不起作用。

已编辑

@kohske 解决方案非常好,如果只有一个输出,则可以正常工作。需要对此类 Chunk 进行更多概括。

<< label=Test, results = "hold" >>=
1:1000
args(lm)
@ 

【问题讨论】:

    标签: r latex knitr sweave


    【解决方案1】:

    这是你想要的吗?

    \documentclass{article}
    \begin{document}
    
    <<include=FALSE>>=
    library(knitr)
    oh <- knit_hooks$get("output")
    knit_hooks$set(output = function(x, options) {
      ret <- strsplit(x, "\n")[[1]]
      ret <- paste0(ret[1], "\n...\n", ret[length(ret)])
      oh(ret, options)
    })
    @
    
    
    << Test>>=
    1:1000
    @
    \end{document}
    

    更新

    knit_hooks$set(output = function(x, options) {
      ret <- strsplit(x, "\n")[[1]]
      ret <- if (length(ret) > 2)
        paste0(ret[1], "\n...\n", ret[length(ret)])
      else
        ret
      oh(ret, options)
    })
    

    【讨论】:

    • (+1):感谢@kohske 的帮助。如果只有一个输出,您的代码可以正常工作。这个钩子对results="hold" 进行了更多的泛化,并且每个块的输出更多。
    • 这可能不是因为hold,而是1:10 的输出只有一行。我修好了它。查看更新。
    猜你喜欢
    • 2018-01-24
    • 2017-12-02
    • 2020-10-09
    • 2015-03-08
    • 1970-01-01
    • 2014-03-18
    • 2013-02-11
    • 2014-02-24
    • 2020-10-23
    相关资源
    最近更新 更多