使用 knitr 和 kable() 生成的表格控制零值的科学记数法和格式

Posted

技术标签:

【中文标题】使用 knitr 和 kable() 生成的表格控制零值的科学记数法和格式【英文标题】:Control scientific notation and format of zero values with knitr and tables produced with kable() 【发布时间】:2016-08-17 20:16:45 【问题描述】:

我有一张小桌子,显示在 Rstudio 中由 knitr 生成的 pdf 文档中。

大多数值都是小数字,所以科学记数法没问题。但是,我有几个零也以科学计数法显示。

有没有办法将这些显示为常规零?

这是一张图片:

表格是用kable(data)生成的

【问题讨论】:

您可以在发布kable(data)之前尝试options(scipen=999) 【参考方案1】:

这是一种方法。一般的想法是,您首先按照您想要的方式格式化数字(小数位数等),然后将零更改为“0”。

---
title: "Untitled"
author: "Author"
date: "August 17, 2016"
output:
  pdf_document
---

```r setup, include=FALSE
library(knitr)
```

```r
# Some data
df = mtcars[1:5,c(1,3:4)]/1e7
rownames(df) = NULL

# Set a few values to zero
df[2:3,2] = 0
df[c(1,3),1] = 0

# Look at the starting data
kable(df)
```

```r
## Reformat table so that zeros are rendered as "0"

# First, format data so that every number is rendered with two decimal places
df = lapply(df, format, digits=3)

# If a value is zero, change string representation to "0" instead of "0.00e+00"
df = sapply(df, function(i) ifelse(as.numeric(i) == 0, "0", i))

kable(df, align=rep('r',3))
```

【讨论】:

以上是关于使用 knitr 和 kable() 生成的表格控制零值的科学记数法和格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有`knitr::kable`的表格*上方添加标题?

显式向 knitr::kable() 提供标签?

使用 knitr kable 函数对齐列

r:在 Flexdashboard 中使用 Shiny 渲染 Kable

使用knitr和Rstudio自动调整LaTeX表格宽度以适合pdf

使用 Kable 将简单的表格添加到单词列表