标签: kable

knitr在渲染html时将(1)更改为<ol>?

.Rmd文件的以下内容:

---
title: "Untitled"
output:
  html_document: default
---

```{r cars}
mtcars$am <- sprintf("(%s)", as.character(mtcars$am))
knitr::kable(mtcars, format = "html")
```
Run Code Online (Sandbox Code Playgroud)

在渲染到html之后,将显示列<ol><li></li></ol>中的有序列表am,而不是括号中的数字(由生成的数字sprintf).

这是有意的吗?我如何解决这个问题并在括号中显示数字,因为它们在html输出中?

输出knitr::kable似乎很好,显示:

<td style="text-align:left;"> (1) </td>

细节:

  • 使用knitr 1.20
  • RStudio Server 1.1.453
  • 请注意删除format = "html"不能解决问题,因为在现实生活中,我想用css进行高级格式化,例如基于生成的表的类

基于Michael Harper接受的答案的快速解决方案可能是这样的方法:

replacechars <- function(x) UseMethod("replacechars")
replacechars.default <- function(x) x
replacechars.character <- function(x) {
  x <- gsub("(", "&lpar;", x, fixed = TRUE)
  x <- gsub(")", "&rpar;", x, fixed = TRUE)
  x
}
replacechars.factor …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown kable

6
推荐指数
1
解决办法
92
查看次数

在非折叠列中使用具有非唯一值的 kableExtra collapse_rows 时出错

我正在使用 Rmarkdown 创建一个包含表格的 PDF 并使用kableExtra::collapse_rows. 当我的非折叠列具有重复值时,我在编织时遇到错误。

---
output: 
  pdf_document:
    latex_engine: xelatex
---

```{r}
library(magrittr)
library(knitr) 
library(kableExtra) 

# Build data with repeated values in last column
dat1 <- data.frame(x = c(rep("First",times=4),rep("Second",times=3)),
                   y = c(rep(4,times=4),rep(3,times=3)),
                   z = c("det1","det2","det2","det3","det4","det5","det5"),
                   stringsAsFactors=FALSE)

# This works fine:
dat1 %>%
  kable(format="latex", booktabs = TRUE, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

# Throws an error when I try to collapse rows of first two columns:
dat1 %>%
  kable(format="latex", booktabs = TRUE, row.names=FALSE) %>%
  collapse_rows(columns = 1:2)
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

!额外对齐选项卡已更改为 \cr。

<recently read> …

r r-markdown kableextra kable

5
推荐指数
0
解决办法
1137
查看次数

如何用kables中的空白替换0

我正在使用 kable 函数创建一个相当大的 html 表,该表中有很多 0。为了更清楚地显示相关信息,我试图通过用空格替换它们来隐藏表格中的 0。

现在,我正在尝试这样的事情,但它不起作用:

my_table = knitr::kable(...)
cat(gsub(0," ",my_table), sep = '\n')
Run Code Online (Sandbox Code Playgroud)

与上述类似的东西可以删除 NA,但我似乎无法让它为 0 工作。

提前致谢!

编辑:示例数据:

Product = c('A','B','A','A','C','B')
Month = c('Jan', 'Feb', 'Feb', 'Apr', 'Jan', 'Feb')
my_data = data.frame(Product, Month)
my_table = table(my_data)
kable(my_table) #This has the 0's which I don't want

Product | Month

A       | Jan

B       | Feb

A       | Feb

A       | Apr

C       | Jan

B       | Feb
Run Code Online (Sandbox Code Playgroud)

电流输出:

----Jan  Feb  Mar Apr

A  1 1 0 1 …
Run Code Online (Sandbox Code Playgroud)

r kableextra kable

5
推荐指数
1
解决办法
1190
查看次数

美元符号导致彩色行出错

我有一张桌子,我正试图用 R Markdown 将它放入 pdf 中。

dt <- c(name = c("a", "b", "c"),
        money = c("$1", "$10", "$100")

dt %>%
kable(format = "latex") %>%
row_spec(1, background = "blue")
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,产生以下错误:

stri_replace_first_regex(string, pattern, fix_replacement(replacement), 中的错误:试图访问越界的索引。(U_INDEX_OUTOFBOUNDS_ERROR) 调用:... row_spec_latex -> str_replace -> stri_replace_first_regex ->。

如果我删除该row_spec部分,它会起作用。如果我删除美元符号,它会起作用。如果我将行更改为第 0 行而不是第 1 行,则它可以工作。但是我无法更改带有美元符号的行的颜色。我知道 $ 是乳胶中的保留字符,但作为一项实验,我查找了所有保留字符并尝试使用它们而不是美元符号,一切正常。美元符号是唯一给我带来麻烦的符号。

有什么方法可以使这项工作成功,还是我注定要拥有一张纯白的桌子?

r r-markdown kableextra kable

5
推荐指数
1
解决办法
754
查看次数

R markdown ioslides - 使用 CSS 更改 kable 字体大小

我想在一张幻灯片上放一张大桌子。我正在使用 kable。我试过了,{.smaller}但还不够,所以我想我会使用 .css 但它也不起作用。

我创建了一个示例演示文稿来说明问题。我尝试编织它,它的显示方式与我的其他演示文稿中的显示方式相同(这很长,这就是我在这里排除它的原因)

我的代码:

---
title: "test"
author: "Test Author"
date: "5 Februar 2018"
output: 
  ioslides_presentation:
    test: presentation.css
---

{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(knitr)


## Test slide

{r}
table <- data.frame(
  index=1:10,
  long_text=c("long text here: asdfghhjoqweqwrqwrqwrasfasdfghhjoqweqwrqwrqwrasfasdfghhjoqweqwrqwrqwrasfasdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf",
    "long text here: asdfghhjoqweqwrqwrqwrasf")
)
kable(table) …
Run Code Online (Sandbox Code Playgroud)

css markdown r ioslides kable

5
推荐指数
1
解决办法
1290
查看次数

是否可以使用 html 选项删除 Kable kableextra 中的水平线?

我正在尝试使用 kable/kableextra 创建一个表格,但不显示表格中的水平线,除了第一行是行名称。

```
{r echo=FALSE}
library(knitr)
library(kableExtra)
options(knitr.kable.NA = '')
dt <- mtcars[1:5, 1:6]
kable(dt, "html") %>%
  kable_styling(full_width = F, position = "left") %>%
  row_spec(0, align = "c",bold=T ) %>%
  column_spec(1, bold = T)
```
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,第一行下方有一行,我喜欢它,因为它们是行名称,但每行之间都有我想删除的行。

理想情况下,我希望在这张桌子底部的顶部有一条稍微粗一点的线。类似于 LaTeX 中的 booktabs 外观。

我已经阅读了文档,但 CSS 超出了我的范围。

感谢您的任何建议。

r kableextra kable

5
推荐指数
1
解决办法
6698
查看次数

Blogdown kable 表格格式(丑陋)

kable(head(mtcars) %>%
  kable_styling(bootstrap_options = c("striped", "hover"))
Run Code Online (Sandbox Code Playgroud)

使用 kable 表(见上文)的普通 R Markdown 文档非常引人注目,如下所示:

kableExtra 默认

但是,当我在 blogdown 中使用相同的代码块时,kable 表以更简约的方式打印,这是我真正不想要的。只是很难阅读:

kable 博客

如何获取 blogdown 以维护普通 kable 表的属性?我已经通过update.packages(ask = FALSE, checkBuilt = TRUE)和更新了我所有的包tinytex::tlmgr_update()

r r-markdown blogdown kableextra kable

5
推荐指数
2
解决办法
718
查看次数

如何在 R 中构建总结第三个变量的双向表(kable 包)

我正在使用 RMarkdown 并尝试使用 kable 包。我有一个三变量数据框:性别(因子)、年龄组(因子)和测试分数(尺度)。我想创建双向表,其中因子变量(性别和年龄组)作为表行和列,并将 test_scores 的汇总统计信息作为单元格内容。这些汇总统计数据包括平均值、标准差和百分位数(中位数、第 1 个十分位数、第 9 个十分位数和第 99 个百分位数)。有没有一种简单的方法可以以漂亮的方式构建这些表(例如使用 kable 包),而无需先将所有这些值输入到矩阵中?我搜索了 kable 帮助文件,但找不到如何操作。

# How my data looks like:

gender <- rep(c(rep(c("M", "F"), each=3)), times=3)
age <- as.factor(rep(seq(10,12, 1), each=6))
score <- c(4,6,8,4,8,9,6,6,9,7,10,13,8,9,13,12,14,16)
testdata <-data.frame(gender,age,score)


| gender | age | score |
|--------|-----|-------|
| M      | 10  | 4     |
| M      | 10  | 6     |
| M      | 10  | 8     |
| F      | 10  | 4     |
| F      | 10  | …
Run Code Online (Sandbox Code Playgroud)

r summary cell kableextra kable

5
推荐指数
1
解决办法
1409
查看次数

R kable/kableExtra,按百分比条件格式化(带有缺失值)

我正在使用 kable 和 kableExtra 并希望显示一个包含百分比列的表格(格式为“95%”)。我还想根据百分比值(具有多种颜色和切点)对单元格背景进行条件格式设置。另外,还混杂了一些NA。

我已经尝试了这篇文章中的一些方法,但不喜欢 cell_spec 背景着色不会对整个单元格进行着色,因此更愿意在 kable 中使用 column_spec 。然而,我发现的所有显示百分比的选项都将百分比转换为字符变量,这限制了我执行条件格式的能力。

当我简化示例代码以发布到此处时(经过几个小时的错误),我终于使用 startWith 使其工作(在本例中这是一个不错的解决方案,因为我的切点位于 80% 和 90%,但对于所有情况)。

df <- tibble(
          x=c(1:6),
          percents =c (1, .95, .82, .77, .62, NA)
          )
    
df$percents <- percent(df$percents, accuracy = 1)

kable(df, booktabs=TRUE, escape=FALSE ) %>% 
   kable_styling() %>% 
  column_spec(2, background = if_else(startsWith(df$percents, '100'), "Darkgrey", 
                              if_else(startsWith(df$percents, '9'), "Darkgrey", 
                              if_else(startsWith(df$percents, '8'), "silver", "lightgray", 
                              "white"), "white"), "white"))
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有人有另一种解决方案来保留将百分比值作为数字而不是字符来使用的能力。

谢谢你!

r conditional-formatting percentage kableextra kable

5
推荐指数
1
解决办法
5098
查看次数

如何使用 escape = FALSE 在 kableExtra 函数中强制换行?

在 kableExtra >= 0.8.0 中,将换行符插入到从 kableExtra 函数(例如or )通过管道输送到表中的文本中的规范方法是直接添加。add_header_abovepack_rows\n

但是,这似乎不适用于该escape = FALSE参数,如果文本还包含 LaTeX 代码,则需要该参数。

如何使用 强制在 kableExtra 函数中换行escape = FALSE

library(dplyr)
library(knitr)
library(kableExtra)

starwars %>%
  filter(species == 'Gungan' | species == 'Droid') %>%
  arrange(species) %>%
  select(name, eye_color) %>%
  kbl(booktabs = TRUE) %>%
  pack_rows(
    index = c(
      'The droids: everybody\'s favourite' = 6, 
      'The Gungans: only beloved of \nthose aged under $3^2$' = 3), 
    escape = FALSE)
Run Code Online (Sandbox Code Playgroud)

latex r r-markdown kableextra kable

5
推荐指数
1
解决办法
416
查看次数