如何在kableExtra table的某些列中使用数学符号或工程符号?

How to use mathematical notation or engineering notation in certain columns of a kableExtra table?

可以将 docxtools::format_engr() 应用于 table 以从计算机符号转换为工程符号。

(来源:docxtools

docxtools::format_engr() 应用于 df 会将所有列更改为工程符号。

  1. 如何仅将函数应用于 df 的某些列?
  2. 是否有数学符号的等效函数?

对于下面的玩具示例,想法是获取 engineering/mathematical 表示法中的 p_Pa 列,而所有其他列保持不变。

MWE

Table 根据需要仅缺少工程符号中的 p_Pa

library(docxtools)
density2 <- density
density2$density <- density2$density*1000
kable(density2, digits = 2)

应用格式:“所有”列更改为工程符号

# Apply formatting:
density_engr <- density2 %>%
  docxtools::format_engr()
kable(density_engr)

sigdig() 传递给 docxtools::format_engr()(例如,诸如“sigdig = c(0,0,2,3,2,3)”之类的东西)以定义如何格式化哪个列帮不上忙。 工程符号仍然适用于所有列,只是位数不同。

我们的想法是将 df 作为 kableExtra table 包含在 R markdown 报告中,该报告使用 knitr 编译为 PDF 和 HTML。

您可以创建一个仅包含要格式化的列的数据框,对其进行格式化,然后将其分配到原始位置。例如,从您的 density2:

开始
density_engr <- density2        # no formatting yet
do_format <- c("T_K", "p_Pa")   # which columns to format?
density_engr[do_format] <- docxtools::format_engr(density_engr[do_format])

除了 density_engr[do_format] 之外,还有其他方法可以进行索引,但请注意:您要确保得到一个数据帧作为结果,而不是提取列。