将表格列格式设置为百分比,以pdf输出的货币格式(Rmarkdown)

时间:2019-12-17 00:42:48

标签: r datatables knitr kable

我有一个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 /乳胶输出。

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

我想要/想要的东西:

类似于DT方法的选项,可产生pdf输出。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

按照@Axeman的建议,至少可以使用scalesformattable软件包的替代方案:

# 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))])