我有一个数据框,我想通过knitr和RMarkdown在HTML文件中将其输出为带有条件格式的表。例:

n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0))
> n
  x y
1 1 0
2 1 1
3 1 0
4 1 1
5 1 0

我希望突出显示具有不同x和y值的行。因此,在这种情况下,应该是行1,行3和行5。如果HTML文件中的输出是HTML表,那将是很好的选择,但如果图像不行,也是可以的。

最佳答案

我一直想通过此功能在自己的pander package中扩展pandoc.table,但是没有时间。但是这个问题确实令人鼓舞,可能会在接下来的几天中做到这一点。在此之前,该如何处理:

  • 加载软件包:
    library(pander)
    
  • 加载数据:
    n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0))
    
  • 更新您的行,以在Pandoc中将其标记为:
    for (i in c(1, 3, 5))
        n[i, ] <- pandoc.strong.return(n[1, ])
    
  • 显示表的 Markdown 版本:
    pandoc.table(n)
    pander(n)       # S3 method
    
  • 将 Markdown 标记为例如具有brew语法的HTML:
    Pandoc.brew(text = '<%=n%>', output = tempfile(), convert = 'html')
    


  • 更新:我已经更新了pander以采用一些新参数来轻松突出显示行/列/单元格。尽管我仍在研究一些辅助功能以简化此过程,但这里还是进行了一个快速演示,使您可以看到它如何帮助您的工作流程:
    > pandoc.table(n, emphasize.rows = c(1, 3, 5))
    
    -------
     x   y
    --- ---
    *1* *0*
    
     1   1
    
    *0* *1*
    
     1   1
    
    *1* *0*
    -------
    
    > pandoc.table(n, emphasize.strong.cells = which(n == 1, arr.ind = TRUE))
    
    -----------
      x     y
    ----- -----
    **1**   0
    
    **1** **1**
    
    **1**   0
    
    **1** **1**
    
    **1**   0
    -----------
    

    更新: pander获得了一些帮助器功能,以更加轻松地突出显示表格中的单元格:
    > t <- mtcars[1:3, 1:5]
    > emphasize.cols(1)
    > emphasize.rows(1)
    > pandoc.table(t)
    
    ----------------------------------------------------
          &nbsp;         mpg    cyl   disp   hp    drat
    ------------------- ------ ----- ------ ----- ------
       **Mazda RX4**     *21*   *6*  *160*  *110* *3.9*
    
     **Mazda RX4 Wag**   *21*    6    160    110   3.9
    
      **Datsun 710**    *22.8*   4    108    93    3.85
    ----------------------------------------------------
    

    或直接使用pander方法:
    > emphasize.strong.cells(which(t > 20, arr.ind = TRUE))
    > pander(t)
    
    ---------------------------------------------------------
          &nbsp;          mpg     cyl   disp     hp     drat
    ------------------- -------- ----- ------- ------- ------
       **Mazda RX4**     **21**    6   **160** **110**  3.9
    
     **Mazda RX4 Wag**   **21**    6   **160** **110**  3.9
    
      **Datsun 710**    **22.8**   4   **108** **93**   3.85
    ---------------------------------------------------------
    

    请注意,这些新功能尚未在CRAN上发布,但是您可以在GitHub上托管的最新版本中找到。

    09-18 08:26