【问题标题】:Knitr kable/pandoc/pander/geom_title/grid.table custom cell formattingKnitr kable/pandoc/pander/geom_title/grid.table 自定义单元格格式
【发布时间】:2014-07-18 14:53:31
【问题描述】:

我想在使用knitrkable函数时在一些数字前后添加符号和字母,但不知道如何有效地做到这一点。不过我也愿意考虑pandoc/pander,如果它更好/更有效。

最终的结果应该是一个 HTML 表格...或者一个非常好的图形...

请查看以下代码作为 .Rmd 文件中的模拟可重现示例:

### Notional and Cumulative P&L

```{r echo=FALSE}
Notional <- 10000
yday_pnl <- -2942
wtd_pnl <- 2300
mtd_pnl <- -3334
ytd_pnl <- 5024

yday_rtn <- (yday_pnl/Notional)*10000
wtd_rtn <- (wtd_pnl/Notional)*10000
mtd_rtn <- (mtd_pnl/Notional)*10000
ytd_rtn <- (ytd_pnl/Notional)*10000

Value <- c(Notional,yday_pnl,wtd_pnl,mtd_pnl,ytd_pnl)
rtn <- c(NA,yday_rtn,wtd_rtn,mtd_rtn,ytd_rtn)

COB.basics <- as.data.frame(cbind(Value,rtn))
rownames(COB.basics) <- c('Notional','yday pnl','wtd_pnl','mtd_pnl','ytd_pnl')
```

```{r results='asis',echo=FALSE}
kable(COB.basics,digits=2)
```

类似于 Excel 的货币或会计格式类型,我希望值字段在 Value 列中使用 $ 符号,对于 rtn 列,我希望在数字...也出于可读性目的,如果在小数点之前,是否可以在三位数之后使用逗号?即代表数千等。

还可以给单元格着色吗?并且也为文本/数字着色?即红色表示负值?

【问题讨论】:

    标签: r ggplot2 knitr gridextra pander


    【解决方案1】:

    pander的部分解决方案:

    1. pander 设置“大标记”,以便将其用于所有数字:

      panderOptions('big.mark', ',')
      
    2. 您还可以将表格语法设置为 rmarkdown(可选,因为现在 rmarkdoen v2 也使用 Pandoc,其中 multiline 格式与之前提供的 rmarkdown 格式相比具有一些很酷的功能:

      panderOptions('table.style', 'rmarkdown')
      
    3. 您可以使用例如突出显示某些单元格。 which 和一些自定义 R 表达式:

      emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
      
    4. 只需在您的data.frame 上拨打pander

      > library(pander)
      > emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
      > panderOptions('big.mark', ',')
      > pander(COB.basics)
      
      -----------------------------------
          &nbsp;       Value       rtn   
      -------------- ---------- ---------
       **Notional**  **10,000**    NA    
      
       **yday pnl**    -2,942    -2,942  
      
       **wtd_pnl**   **2,300**  **2,300**
      
       **mtd_pnl**     -3,334    -3,334  
      
       **ytd_pnl**   **5,024**  **5,024**
      -----------------------------------
      
      > panderOptions('table.style', 'rmarkdown')
      > pander(COB.basics)
      |     &nbsp;     |  Value  |  rtn   |
      |:--------------:|:-------:|:------:|
      |  **Notional**  | 10,000  |   NA   |
      |  **yday pnl**  | -2,942  | -2,942 |
      |  **wtd_pnl**   |  2,300  | 2,300  |
      |  **mtd_pnl**   | -3,334  | -3,334 |
      |  **ytd_pnl**   |  5,024  | 5,024  |
      

    要为单元格着色,您可以手动添加一些自定义 HTML/CSS 标记(或者如果长期使用 pdf,则添加 LaTeX),同样也可以添加 % 或其他符号/字符串到您的单元格例如pasteapply -- 但请随时通过 https://github.com/Rapporter/pander 提交功能请求

    【讨论】:

    • 我对 pander 不是很熟悉...如何将它放入 R markdown 文件中?
    • @h.l.m 调用pander 而不是kable 并且可能还将表格样式设置为rmarkdown(参见更新的示例)——尽管默认的multiline 格式对Pandoc 来说很好。
    • 文件会通过knit2html()函数吗?
    猜你喜欢
    • 2020-11-24
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2013-06-14
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多