假设我有下表(数据集)并将其编织在 rmarkdown 文档中:
```{r global_options, include=FALSE, eval=TRUE, results='asis'}
knitr::opts_chunk$set(echo=FALSE, #this sets up chunks, can then edit ones we want individually
warning=FALSE,
message=FALSE,
eval=FALSE)
library(kableExtra)
```
```{r , eval=TRUE, results='asis'}
test <- structure(list(`Dependent: Surv(time, status)` = c("Age", "",
""), c("<40 years", "40-59 years", "60+ years"), `HR (univariable)` = c("-",
"0.76 (0.53-1.09, p=0.132)", "0.93 (0.66-1.31, p=0.668)"), `HR (multivariable)` = c("-",
"0.79 (0.55-1.13, p=0.196)", "0.98 (0.69-1.40, p=0.926)")), .Names = c("Dependent: Surv(time, status)",
"", "HR (univariable)", "HR (multivariable)"), row.names = c(NA,
3L), class = …Run Code Online (Sandbox Code Playgroud) 我有一个data.frame想要以格式化方式打印在 RMarkdown 文档(HTML 输出)中的文件。我需要它的 3 个功能我无法同时获得:
我可以通过以下方式轻松滚动获得标题kableExtra:
library(kableExtra)
cars %>%
kable(caption = 'Cars') %>%
kable_styling(bootstrap_options = c('striped', 'condensed')) %>%
scroll_box(width = "500px", height = "200px")
Run Code Online (Sandbox Code Playgroud)
但是当我向下滚动时,标题和列标题也会滚动,并且很难看到每一列是什么。
通过添加到 YAML 标头,我可以从默认打印行为中df_print: paged获得非常漂亮的分页输出(请参阅R Markdown:权威指南):
---
title: "Motor Trend Car Road Tests"
output:
html_document:
df_print: paged
---
```{r}
cars
```
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,没有办法为此添加标题或说明。我可以使用 markdown 添加标题,但生成表格的代码将卡在标题和表格之间。我还缺少其他选项吗?
我需要更改用 knit::kable 打印的表格标题的背景颜色。我可以用来kableExtra::column_spec更改整个列的背景,但它不会影响标题行:
library(knitr)
library(kableExtra)
kable(data.frame(a = 1, b = 2)) %>%
column_spec(1, background = "yellow")
Run Code Online (Sandbox Code Playgroud)
想要的结果:kable列标题a具有黄色背景(表的其余部分具有白色背景)的
输出。
我有一个非常宽的表格(300 多列),并且想通过换行来显示它。在示例中,我将仅使用 100 列。
我的想法是重复使用 kable 来显示表的子集:
library(kableExtra)
set.seed(1)
data = data.frame(matrix(rnorm(300, 10, 1), ncol = 100))
kable(data[, 1:5], 'latex', booktabs = T)
kable(data[, 6:10], 'latex', booktabs = T)
kable(data[, 11:15], 'latex', booktabs = T)
Run Code Online (Sandbox Code Playgroud)
但这显然很乏味......我知道有缩小比例的选项,但由于我有这么多列,这是不可能的。
我可以在 kable 中添加任何参数来实现它吗?
更新:@jay.sf 的答案似乎运行良好,但这里没有产生相同的结果。相反,我得到了一些简单的代码 - 您能否再看一下并让我知道我可以在哪里改进?谢谢!
我的是sessionInfo():R version 3.5.1 (2018-07-02)与rmarkdown::pandoc_version().1.19.2.1
我目前正在使用kable_styling()kableExtra 中的以下内容:
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Run Code Online (Sandbox Code Playgroud)
我可以在 YAML 元数据的 R Markdown 文档中将表格样式设置为 kable,如下所示:
output:
html_document:
df_print: kable
Run Code Online (Sandbox Code Playgroud)
但这只是以纯 HTML 输出我的所有表格。我不知道如何将我的应用kable_styling()到所有块。目前我必须在每一块中完整地写出以下内容:
df %>%
kable() %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Run Code Online (Sandbox Code Playgroud)
问题
如何将 my 应用于kable_styling()所有代码块,而不必将其写在所有代码块中?
我正在尝试使用kable并kableextra创建一个具有不同分组标题但子标题中具有相同列名的表
例如,如果您查看Create Awesome LaTeX Table with knit::kable 和 kableExtra的“分组列/标题”部分(第 14 页) ,它会被分组,但子标题名称不同:
library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:6]
kable(dt, "latex", booktabs = T) %>%
kable_styling() %>%
add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2, "Group 3" = 2))
Run Code Online (Sandbox Code Playgroud)
我想做的是将汽车作为组进行类似的操作(例如仅使用两辆车):
Mazda RX4 | Datsun 710
----------------------
mpg | cyl | mpg | cyl
----------------------
21.0| 6 | 21.4| 6
Run Code Online (Sandbox Code Playgroud)
或者作为另一个例子:
Group 1 | Group 2
------------------
x | y | x …Run Code Online (Sandbox Code Playgroud) 我正在 Rmarkdown (特别是 bookdown)中写我的论文,并使用 knit 将其编译成 PDF。
当我编织它时,除了表格和数字之外,一切都很完美。
这些表格(用 kable 生成)看起来几乎完美,但包装如下(其中 [table] 是正确呈现的表格):
\begin{table}
\caption{(#tab:rchunk_label) table_caption}
[table]
\end{table}
Run Code Online (Sandbox Code Playgroud)
因此,标题不会出现在表格上。此外,这会导致文档其余部分的文本对齐发生变化。如果我不包含标题,问题就会消失,但我相信乳胶输出支持标题。
除了在实际标题之前的括号中包含 r 块标签的标题之外,图形渲染正确。
如果相关,“lot”(表格列表)函数不会识别文档中的任何表格,而“lof”(图表列表)函数则可以识别。
到目前为止,我已经尝试将结果设置为“asis”,将代码复制到另一个文档中,并检查原始乳胶输出。原始乳胶似乎是正确的(没有重复的 \begin{table} 或任何东西)。
我正在使用 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) 大家好,新年快乐,
我有一张不同学习模型的准确性和 kappa 输出的表格,并使用 knit::kable 来显示它们。
我现在想首先按准确度(从顶部最高到底部最低)对模型(行)进行排序,然后在此排序中,根据从最高到最低的 Kappa 对行进行排序。因此,我希望将准确性作为最重要的订单标准,而将 Kappa 作为第二重要的标准。表中还有其他列,但这是我想要对行进行排序的两列。
我在这方面相当缺乏经验,非常感谢您的帮助。我也对其他在 RMarkdown 中生成漂亮表格的函数/库持开放态度,这可以帮助我解决这个问题。
谢谢你,最好的,corkinabottle
我正在使用 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)
我很好奇是否有人有另一种解决方案来保留将百分比值作为数字而不是字符来使用的能力。
谢谢你!
kable ×10
r ×9
r-markdown ×8
kableextra ×5
knitr ×4
bookdown ×1
cell ×1
latex ×1
percentage ×1
summary ×1