从 .rmd 编织到 Word 时如何格式化 ka​​ble 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 的软件包。