2

我想在使用knitr'skable函数时在一些数字前后添加符号和字母,但不知道如何有效地做到这一点。然而,我也愿意考虑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列,我希望bps在数字后面加上字符串……为了便于阅读,是否可以如果在小数点之前,三位数字后面有逗号吗?即代表数千等。

也可以给细胞上色吗?并且也为文本/数字着色?即红色表示负值?

4

1 回答 1

2

部分解决方案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. 只需致电pander您的data.frame

    > 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提交功能请求

于 2014-07-18T16:04:40.407 回答