首页 > 解决方案 > 将表格列格式化为百分比,pdf 输出的货币 (Rmarkdown)

问题描述

我有一个 Rmarkdown 文档,我需要在其中生成一个表格。该表有几列,其中一些是货币,另一些是百分比。我需要生成一个 pdf 输出。

样本数据

这就足够了:

library(data.table)
df <- data.table(x = letters[1:3], y = c(10.20, 20.501, 30.3222), z = c(0.6, 0.065, 0.95))

我尝试过的替代方案

我知道我可以根据需要格式化每一列,如下所示:

kable(df[, .(x, paste0("$", round(y, 0)), paste0(round(100 * z, 1), "%"))

另外,如果我有 html 输出而不是pdf,我可以做类似的事情

library(DT)
datatable(df) %>% formatCurrency(columns = 2, digits = 0) %>% formatPercentage(columns = 3, digits = 1)

我遇到的困难

我不能使用这种DT::datatable方法,因为我的输出是 pdf,而 DT 不产生 pdf/latex 输出。

我不想使用这种方法,因为为每种不同的情况kable生成代码会很麻烦。paste0

我想要/想要的:

类似于DT生成 pdf 输出的方法的选项。

我怎样才能做到这一点?

标签: rdatatablesknitrkable

解决方案


遵循@Axeman 的建议,至少有使用 withscalesformattablepackages 的替代方案:

# Option 1: scales
library(scales)
kable(df[, .(x, dollar(y, accuracy = 1), percent(z, accuracy = 0.1))])


# Option 2: formattable
detach("package:scales", unload = TRUE) #function percent has the same name
library(formattable)
kable(dt[, .(x, currency(y, digits = 0), percent(z, digits = 1))])

推荐阅读