从.rmd编织到Word时如何格式化kable表(带书签)

JHa*_*ins 4 r r-markdown bookdown kableextra

我已经阅读了这本书,但仍然无法弄清楚这一点.我正在尝试通过创建Word报告bookdown.我想用来kableExtra为我的表添加条带化,以及加粗我的最后一个表行.可以kableExtra编织到Word时可以使用?

这是我的代码的一个子集:

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)
Run Code Online (Sandbox Code Playgroud)

我的预订设置如下:

--- 
title: "My Report"
author: "Me"
date: "`r Sys.Date()`"
site: "bookdown::bookdown_site"
output:
  bookdown::word_document2:
    fig_caption: true
documentclass: book
---
Run Code Online (Sandbox Code Playgroud)

当我点击RStudio中的Knit按钮时,我得到了这个表1.

我希望最后一行是粗体,我希望表格条纹.我该怎么做呢 ?(我也收到以下错误:"目前不支持使用pandoc的通用降价表.")

Dav*_*hel 10

这是不可能的,但由于pandoc V2已经用完,你可以使用package 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()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!“弹性表”只是救了我的命。 (2认同)

小智 8

huxtable封装.它包括类似的表自定义工具kableExtra.huxtable旨在输出到LaTeX/PDF和HTML(类似于kableExtra).但是,huxtable还包括as_flextable将huxtable对象转换为flextable对象的函数,该对象可以输出到Word(如上面David所述).经过大量的搜索,在我看来,这huxtable是唯一可以使用单个包轻松输出到Word,HTML和PDF的可用包.


Ced*_*ric 5

Pandoc 版本 \xe2\x89\xa52

\n

是的,这可以用 Pandoc 来完成(参见David 的回答

\n

原答案如下:

\n

Pandoc版本<2

\n

到单词的转换是通过pandoc. 目前 pandoc 仅创建四种类型的表,

\n
    \n
  • 简单的表格
  • \n
  • 多行表
  • \n
  • 网格表
  • \n
  • 管道表
  • \n
\n

其中一些受支持的格式在panderpandoc 手册第 35-39 页中进行了演示。

\n

因此目前无法使用 pandoc创建剥离表

\n

您还对如何使用rmarkdown.rstudio中的表格进行了很好的总结。

\n

  • 听说无法编织到 Word 文档并使用“kableExtra”,真是令人耳目一新。我在任何地方都不清楚这一点,所以我很感激。希望这将在未来节省某人数小时/数天的时间! (8认同)