我想在使用knitr
的{{1}}函数时在某些数字之前和之后添加符号和字母,但不知道如何有效地执行此操作。但是,我也愿意考虑kable
/ pandoc
,如果它更好/更有效。
最终结果应该是一个HTML表格......或者非常好的图形......
请参阅以下代码作为.Rmd文件中的模拟可重现示例:
pander
与Excel的格式类型的货币或会计类似,我希望值字段包含### 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)
```
列的$符号,而Value
列我希望拥有字符串{数字之后的{1}} ...为了便于阅读,如果它在小数点之前,是否可以在三位数之后使用逗号?即代表数千人等。
还可以为细胞着色吗?并且还为文本/数字着色?即红色为负值?
答案 0 :(得分:2)
pander
的部分解决方案:
Set&#34; big mark&#34;对于pander
,以便它将用于所有数字:
panderOptions('big.mark', ',')
您还可以将表格语法设置为rmarkdown
(可选,因为现在rmarkdoen v2也使用Pandoc,其中multiline
格式与rmarkdown
格式相比具有一些很酷的功能之前提供的格式:
panderOptions('table.style', 'rmarkdown')
您可以使用例如which
和一些自定义R表达式:
emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
只需致电pander
上的data.frame
:
> library(pander)
> emphasize.strong.cells(which(COB.basics > 0, arr.ind = TRUE))
> panderOptions('big.mark', ',')
> pander(COB.basics)
-----------------------------------
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)
| | 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),同样也可以添加%
或其他符号/字符串。细胞与... paste
和apply
- 请随时在https://github.com/Rapporter/pander