r - 使用数字和整数列格式化 Markdown 表

标签 r markdown knitr

knitr::kable() 如何忽略格式化整数列并格式化所有其他数字列?

示例:

knitr::kable(x = as.data.frame(rbind(c(1L, 21.211), c(2L, 31.233))), format.args = list("数字"= 2, "nsmall"= 2, "big.mark"= ".", "decimal.mark"= ",", "scientific"= FALSE))

它返回:

[1]“| V1| V2|” “|----:|-----:|” “| 1,00| 21,21|” “| 2,00| 31,23|”

我的输出是这样的:

[1]“| V1| V2|” “|----:|-----:|” “| 1 | 21,21 |” “| 2| 31,23|”

谢谢

最佳答案

knitr::kable 始终对所有数字列应用相同的格式,因此您唯一的选择是在调用它之前将其转换为字符列,如 J_F 引用文献所建议的那样。

我怀疑它是否可以完全自动化。您开始使用的数据框只有数字列; 整数值通过c()转换为数字。 (您可以通过以不同方式构建数据帧来避免这种情况。)假设您有某种方法来构建一个向量来指示您想要以哪种方式格式化哪些列,您可以自动执行如下操作:

df <- as.data.frame(rbind(c(1L, 21.211), c(2L, 31.233)))
intcolumn <- c(TRUE, FALSE)  # This is hard to automate

for (i in seq_len(ncol(df))) {
  if (intcolumn[i])
    df[[i]] <- format(df[[i]])
  else
    df[[i]] <- format(df[[i]], digits = 2, nsmall = 2, big.mark = ".", 
                      decimal.mark = ",", scientific = FALSE)
}
knitr::kable(df, align = "r") # right align as for numeric column

这会产生

| V1|    V2|
|--:|-----:|
|  1| 21,21|
|  2| 31,23|

关于r - 使用数字和整数列格式化 Markdown 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817101/

相关文章:

java - 增加 R 中的 Java 堆大小没有效果

javascript - 如何向 SimpleMDE 添加自定义 Markdown 功能?

r - knitr/jekyll/server::jekyll 图像很大或分辨率不高

javascript - Markdown-it 不工作,在页面加载时抛出错误

knitr中python block 的根目录?

r - 如何使用 dev.new() 在 knitr 小插图中显示图?

基于时间间隔和键的年份 R 聚合

r - 为什么 `sapply` 在 R 中处理数据帧中的行比处理列慢得多?

r - 按两个或多个列表的元素应用函数

visual-studio-code - Markdown 不使用 emmet