代码之家  ›  专栏  ›  技术社区  ›  Jesper.Lindberg

将长文本输出换行为R标记

  •  0
  • Jesper.Lindberg  · 技术社区  · 7 年前

    我正在做一个R标记的报告,并执行一个给我一个错误的代码。我想在报告中显示这个错误,所以我设置 error=TRUE 所以不管怎样我都能编好文件。

    但是,这个错误不能在一行中找到,并且在我编织文档时不会拆分为多行。导致我看不到所需的错误。

    我为解决这个问题所做的努力:

    tidy.opts=list(width.cutoff=60),tidy=TRUE
    

    https://github.com/yihui/knitr-examples/blob/master/077-wrap-output.Rmd

    我用于获取错误的方法: B<-solve(A,b) 实际误差:

    Error in solve.default(A, b) : system is computationally singular: reciprocal condition number = 7.13971e-17
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Martin Schmelzer    7 年前

    也许这已经解决了你的问题:

    有不同的输出挂钩。如果您通过更改错误挂钩而不是输出挂钩来更改您发布的示例,那么它会工作:

    error_hook <- knitr::knit_hooks$get("error")
    knitr::knit_hooks$set(error = function(x, options) {
      if (!is.null(n <- options$linewidth)) {
        x = knitr:::split_lines(x)
        if (any(nchar(x) > n)) x = strwrap(x, width = n)
        x = paste(x, collapse = '\n')
      }
      error_hook(x, options)
    })
    

    MWE:

    ---
    title: "example"
    date: "22 January 2019"
    output: pdf_document
    ---
    
    ```{r}
    error_hook <- knitr::knit_hooks$get("error")
    knitr::knit_hooks$set(error = function(x, options) {
      if (!is.null(n <- options$linewidth)) {
        x = knitr:::split_lines(x)
        if (any(nchar(x) > n)) x = strwrap(x, width = n)
        x = paste(x, collapse = '\n')
      }
      error_hook(x, options)
    })
    ```
    
    ```{r, linewidth = 10, error = T}
    print(iDoNotExist)
    ```
    

    enter image description here