我正在尝试使用 knit::kable 生成一个降价表,其中数字的舍入因行而异。例如,假设我有以下 data.frame:
example.df <- data.frame(a = c(0.1234, 2000), b = c(0.5678, 3000))
Run Code Online (Sandbox Code Playgroud)
我想创建以下降价表,其中第一行四舍五入为两位数,第二行四舍五入为整数。
| a| b|
|----:|----:|
| 0.12| 0.57|
| 2000| 3000|
Run Code Online (Sandbox Code Playgroud)
相反,我似乎只能格式化整个列。
library(knitr)
kable(example.df, digits = c(2, 0))
Run Code Online (Sandbox Code Playgroud)
这会产生以下降价表:
| a| b|
|-------:|----:|
| 0.12| 1|
| 2000.00| 3000|
Run Code Online (Sandbox Code Playgroud)
关于如何在 R 中生成具有数字行格式格式的 Markdown 表,有什么建议吗?
正如 @user20650 所指出的,一种解决方案包括在R将数据传递到knitr. 可以这样做:
example.df <- rbind(formatC(as.numeric(example.df[1,]),format="f",digits=2),
formatC(as.numeric(example.df[2,]),format="d"))
colnames(example.df) <- c("a","b")
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出:
> kable(example.df, align="r")
| a| b|
|----:|----:|
| 0.12| 0.57|
| 2000| 3000|
Run Code Online (Sandbox Code Playgroud)