r - 将表格列格式化为百分比,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 输出的方法的选项。
我怎样才能做到这一点?
解决方案
遵循@Axeman 的建议,至少有使用 withscales
和formattable
packages 的替代方案:
# 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))])
推荐阅读
- ruby-on-rails - 不允许的参数::utf8, :authenticity_token, :auth_key, :password, :commit, :provider
- django - 如何从不可用的 virtualenv 中拯救 django 项目
- eclipse - Eclipse 菜单的换行器
- vuejs2 - Vue CLI 图标
- python - 基于类的视图过滤 Django Rest 框架
- node.js - 如何在 Express.js 中读取和生成 pdf?
- agda - Agda 记录:字段别名
- python - 如何在python中的类gobal中进行导入?
- php - Woocommerce - 我可以汇总每个用户订购的特定产品的数量吗?
- git - 运行 mvn versions:set 时,有什么方法可以自动抑制对未修改代码的影响?