【问题标题】:Problems rendering table using r Markdown, kable and kableExtra使用 r Markdown、kable 和 kableExtra 渲染表格时出现问题
【发布时间】:2017-12-07 22:27:23
【问题描述】:

我正在尝试使用 r markdown、kable 和 kableExtra 输出乳胶表。我在不属于 R 生成的乳胶代码的表格呈现代码中收到错误。

代码:

outTab <- m.OutTab %>%
    kable(format='latex',  booktabs=T ,
          #caption = "Population Trend",
          digits=1, 
          row.names=FALSE, 
          align='lccccc', 
          col.names = names_spaced,
          escape = FALSE)

其中“m.OutTab”是一个包含要呈现的表格的矩阵,

错误:

Error producing PDF.
! Misplaced \noalign.
\addlinespace ->\noalign 
                         {\ifnum 0=`}\fi \@ifnextchar [{\@addspace }{\@addsp...
l.116    \addlinespace

Error: pandoc document conversion failed with error 43

这些代码(“\noalign ...”)不是“outTab”的一部分。

知道如何解决这个错误吗?

【问题讨论】:

  • 您好,您的代码中没有提供足够的信息,我试过但无法重现您的问题。我必须在开始时猜测 names_spaced 或表格的格式是什么。可能添加header-includes: - \usepackage{booktabs},但很难知道这是否是您的问题
  • 我也有同样的问题。我有一个带有单个图表的简单 pdf 降价。当我在没有 kableExtra 的情况下编织它时,只使用 knitr::kable(chart),没问题。当我在加载 kableExtra 后编织它时,即使我不使用该包中的任何函数来更改我的图表,我也会收到以下错误:生成 PDF 时出错。 !错位 \noalign。 \hline ->\noalign {\ifnum 0=`}\fi \let \hskip \vskip \let \vrule \hrule \let... l.109 \hline 错误:pandoc 文档转换失败,错误 43
  • 我发现只有在 kable 调用中有“escape = T”时才会出现错误。 escape = F 没有给出错误,尽管 pdf 在表格单元格中使用一堆 html 代码而不是实际值呈现图表。

标签: r markdown kable kableextra


【解决方案1】:

如果您使用的是 bookdown,这可能是由于在代码块标签中使用了非字母数字字符造成的。我有一个类似的问题,通过删除下划线解决了。

【讨论】:

  • 我已经与这样的奇怪错误作斗争了好几个小时!这是解决方案:Knitr 不能正确处理字幕中的下划线,所以不要使用它们。
  • 如果您使用 caption = "..." 而不是代码块来为您的表格添加标题,也会在标题中使用非字母数字字符引起 :)
【解决方案2】:

我遇到过这个问题。我似乎可以通过指定 format="pandoc" 或 format="markdown" 来修复它。如果处理来自 kable 的乳胶输出似乎有些问题。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,虽然我的错误信息略有不同:

    ! Misplaced \noalign.
    \addlinespace ->\noalign 
                         {\ifnum 0=`}\fi \@ifnextchar [{\@addspace }{\@addsp...
    l.376 \end{tabu}
    Error: Failed to compile
    

    就我而言,添加

    format = "latex"
    

    full_width = FALSE
    

    解决了。

    【讨论】:

      【解决方案4】:

      这个问题似乎获得了很多流量。如果您看到这样的错误,则意味着您编写的原始乳胶有问题。检查特殊符号,如

      由于运行机制,很多使用 kableExtra 的地方都需要双重转义,这意味着你需要输入\\\\ 才能得到\。尝试几次后,您应该能够使其正常工作。

      【讨论】:

      • 错误 cannot 表示“您编写的原始 LaTeX 有问题”,因为该问题与来自 RMarkdown 源的 knitr 和 kableExtra 生成的 LaTeX 有关。
      猜你喜欢
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多