R - 按行改变 knitr::kable 生成的数字舍入

vik*_*jam 6 r

我正在尝试使用 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 表,有什么建议吗?

RHe*_*tel 6

正如 @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)