从 .rmd 编织到 Word 时如何格式化 kable table(带 bookdown)
How to format kable table when knit from .rmd to Word (with bookdown)
我已经阅读了bookdown book,但仍然无法理解。我正在尝试通过 bookdown
创建 Word 报告。我想使用 kableExtra
将条纹添加到我的 table 中,并加粗我最后的 table 行。编成Word可以用kableExtra
吗?
这是我的代码的一个子集:
library(dplyr)
knitr::opts_chunk$set(echo = TRUE)
library(knitr) # required for kable
library(kableExtra) # required for kableExtra
options(knit.r.table.format = "markdown")
myRegion <- c("a", "b", "c")
Current_Perc_1 <- c(85.9, 90.8, 89.7)
Current_Perc_2 <- c(88.0, 91.0, 89.0)
tab_curr_est_2_times <- cbind(myRegion, Current_Perc_1, Current_Perc_2)
tab_curr_est_2_times <- as.data.frame(tab_curr_est_2_times, stringsAsFactors = FALSE)
tab_curr_est_2_times$Current_Perc_1 <- as.double(tab_curr_est_2_times$Current_Perc_1)
tab_curr_est_2_times$Current_Perc_2 <- as.double(tab_curr_est_2_times$Current_Perc_2)
tab_curr_est_2_times$curr_change_1_to_2 <- tab_curr_est_2_times$Current_Perc_2 - tab_curr_est_2_times$Current_Perc_1
tab_1_curr <- tab_curr_est_2_times
tab_1_curr[ nrow(tab_1_curr)+1 , ] <- NA
tab_1_curr$myRegion[ nrow(tab_1_curr) ] <- "BRITISH COLUMBIA"
tab_1_curr$Current_Perc_1[ nrow(tab_1_curr) ] <- 88.4
tab_1_curr$Current_Perc_2[ nrow(tab_1_curr) ] <- 89.3
tab_1_curr$curr_change_1_to_2[ nrow(tab_1_curr) ] <- 0.9
knitr::kable(tab_1_curr, digits = 1, align = "lccc", position = "c",
caption = "\: my table caption here") %>%
kable_styling("striped") %>%
row_spec(nrow(tab_1_curr), bold = TRUE)
我的bookdown设置如下:
---
title: "My Report"
author: "Me"
date: "`r Sys.Date()`"
site: "bookdown::bookdown_site"
output:
bookdown::word_document2:
fig_caption: true
documentclass: book
---
当我在 RStudio 中点击 Knit 按钮时,我得到这个 table:
我希望最后一行是粗体并且我想要 table 条纹。我该怎么做呢 ? (我也收到以下错误:"Currently generic markdown table using pandoc is not supported.")
潘多克
通过 pandoc
转换为 word。目前 pandoc 只创建四种类型的 tables,
- 简单tables
- multiline_tables
- grid_tables
- pipe_tables
其中一些受支持的格式在 pander and in the pandoc manual 第 35-39 页中进行了演示。
所以你不能创建剥离table当前与pandoc。
您还很好地总结了如何在 rmarkdown.rstudio 中使用 table。
Pandoc v2
看下面大卫的好消息
这是不可能的,但是因为 pandoc V2 已经出来了,你可以用包 flextable (>= 0.4.0)
(和 pandoc V2)来完成。在代码下方,您应该添加到代码块中:
library(magrittr)
library(flextable)
tab_1_curr <- structure(list(myRegion = c("a", "b", "c", "BRITISH COLUMBIA"
), Current_Perc_1 = c(85.9, 90.8, 89.7, 88.4), Current_Perc_2 = c(88,
91, 89, 89.3), curr_change_1_to_2 = c(2.09999999999999, 0.200000000000003,
-0.700000000000003, 0.9)), .Names = c("myRegion", "Current_Perc_1",
"Current_Perc_2", "curr_change_1_to_2"), row.names = c(NA, 4L
), class = "data.frame")
regulartable(tab_1_curr) %>%
bold(i = ~ myRegion %in% "BRITISH COLUMBIA") %>%
theme_zebra() %>%
autofit()
huxtable
包可用。它包含与 kableExtra
类似的 table 自定义工具。 huxtable
被设计成输出到LaTeX/PDF和HTML(类似于kableExtra
)。但是,huxtable
还包括一个 as_flextable
函数,用于将 huxtable 对象转换为 flextable 对象,可以将其输出到 Word(如上文 David 所述)。经过大量搜索,在我看来 huxtable
是唯一可以轻松输出到所有 Word、HTML 和 PDF 的软件包。
我已经阅读了bookdown book,但仍然无法理解。我正在尝试通过 bookdown
创建 Word 报告。我想使用 kableExtra
将条纹添加到我的 table 中,并加粗我最后的 table 行。编成Word可以用kableExtra
吗?
这是我的代码的一个子集:
library(dplyr)
knitr::opts_chunk$set(echo = TRUE)
library(knitr) # required for kable
library(kableExtra) # required for kableExtra
options(knit.r.table.format = "markdown")
myRegion <- c("a", "b", "c")
Current_Perc_1 <- c(85.9, 90.8, 89.7)
Current_Perc_2 <- c(88.0, 91.0, 89.0)
tab_curr_est_2_times <- cbind(myRegion, Current_Perc_1, Current_Perc_2)
tab_curr_est_2_times <- as.data.frame(tab_curr_est_2_times, stringsAsFactors = FALSE)
tab_curr_est_2_times$Current_Perc_1 <- as.double(tab_curr_est_2_times$Current_Perc_1)
tab_curr_est_2_times$Current_Perc_2 <- as.double(tab_curr_est_2_times$Current_Perc_2)
tab_curr_est_2_times$curr_change_1_to_2 <- tab_curr_est_2_times$Current_Perc_2 - tab_curr_est_2_times$Current_Perc_1
tab_1_curr <- tab_curr_est_2_times
tab_1_curr[ nrow(tab_1_curr)+1 , ] <- NA
tab_1_curr$myRegion[ nrow(tab_1_curr) ] <- "BRITISH COLUMBIA"
tab_1_curr$Current_Perc_1[ nrow(tab_1_curr) ] <- 88.4
tab_1_curr$Current_Perc_2[ nrow(tab_1_curr) ] <- 89.3
tab_1_curr$curr_change_1_to_2[ nrow(tab_1_curr) ] <- 0.9
knitr::kable(tab_1_curr, digits = 1, align = "lccc", position = "c",
caption = "\: my table caption here") %>%
kable_styling("striped") %>%
row_spec(nrow(tab_1_curr), bold = TRUE)
我的bookdown设置如下:
---
title: "My Report"
author: "Me"
date: "`r Sys.Date()`"
site: "bookdown::bookdown_site"
output:
bookdown::word_document2:
fig_caption: true
documentclass: book
---
当我在 RStudio 中点击 Knit 按钮时,我得到这个 table:
我希望最后一行是粗体并且我想要 table 条纹。我该怎么做呢 ? (我也收到以下错误:"Currently generic markdown table using pandoc is not supported.")
潘多克
通过 pandoc
转换为 word。目前 pandoc 只创建四种类型的 tables,
- 简单tables
- multiline_tables
- grid_tables
- pipe_tables
其中一些受支持的格式在 pander and in the pandoc manual 第 35-39 页中进行了演示。
所以你不能创建剥离table当前与pandoc。
您还很好地总结了如何在 rmarkdown.rstudio 中使用 table。
Pandoc v2
看下面大卫的好消息
这是不可能的,但是因为 pandoc V2 已经出来了,你可以用包 flextable (>= 0.4.0)
(和 pandoc V2)来完成。在代码下方,您应该添加到代码块中:
library(magrittr)
library(flextable)
tab_1_curr <- structure(list(myRegion = c("a", "b", "c", "BRITISH COLUMBIA"
), Current_Perc_1 = c(85.9, 90.8, 89.7, 88.4), Current_Perc_2 = c(88,
91, 89, 89.3), curr_change_1_to_2 = c(2.09999999999999, 0.200000000000003,
-0.700000000000003, 0.9)), .Names = c("myRegion", "Current_Perc_1",
"Current_Perc_2", "curr_change_1_to_2"), row.names = c(NA, 4L
), class = "data.frame")
regulartable(tab_1_curr) %>%
bold(i = ~ myRegion %in% "BRITISH COLUMBIA") %>%
theme_zebra() %>%
autofit()
huxtable
包可用。它包含与 kableExtra
类似的 table 自定义工具。 huxtable
被设计成输出到LaTeX/PDF和HTML(类似于kableExtra
)。但是,huxtable
还包括一个 as_flextable
函数,用于将 huxtable 对象转换为 flextable 对象,可以将其输出到 Word(如上文 David 所述)。经过大量搜索,在我看来 huxtable
是唯一可以轻松输出到所有 Word、HTML 和 PDF 的软件包。