首页 > 解决方案 > Knitr html格式问题

问题描述

编织到 html 时,数据框中的值会变形。当值小于 3 个字符时会发生这种情况,如下所示。-5770 被正确转换为(5770)但 -577 导致577.后面附加一个 li 元素。这是 knitr 的错误还是我的代码中的错误?

round_numeric <- function(num, prec = 0) {
  return (round(as.numeric(num), prec))
}

format_numeric <- function(num, prec = 0) {
  rounded_num <- abs(round_numeric(num, prec))
  res <- format(rounded_num, nsmall = prec, big.mark = ',', trim = TRUE)
  return (ifelse(num >= 0, res, sprintf('(%s)', res)))
}

col1 <- format_numeric(-5770)
col2 <- format_numeric(-577)
col3 <- format_numeric(300)

df <- t(data.frame(row1 = c(col1, col2, col3)))

df %>%
  kable(align = 'c', format = 'html') %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))

R-studio 中的正确输出:

在此处输入图像描述

使用knit to html和 R-studio在 html 文件中的错误输出:

在此处输入图像描述

标签: rr-markdownknitrkablekableextra

解决方案


所以问题是(577)括号内的或任何整数被pandocs表述为有序列表。为了防止这种情况,您可以在 YAML 中禁用它,只需添加以下内容。

output: 
  html_document:
    md_extensions: "-fancy_lists"

推荐阅读