【问题标题】:How to use mathematical notation or engineering notation in certain columns of a kableExtra table?如何在 kableExtra 表的某些列中使用数学符号或工程符号?
【发布时间】:2021-01-16 11:40:29
【问题描述】:

可以将docxtools::format_engr() 应用于表格以从计算机符号切换到工程符号。

(来源:docxtools

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

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

对于下面的玩具示例,我们的想法是使用工程/数学表示法获取 p_Pa 列,而所有其他列保持不变。

MWE

根据需要的表仅缺少工程符号中的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 表包含在使用knitr 编译为PDF 和HTML 的R markdown 报告中。

【问题讨论】:

    标签: r r-markdown notation kable kableextra


    【解决方案1】:

    您可以创建一个仅包含您想要格式化的列的数据框,对其进行格式化,然后将其分配到原始位置。例如,从您的 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] 之外,还有其他方法可以进行索引,但请注意:您要确保获得一个数据框作为结果,而不是提取列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2019-03-04
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多