合并弹性表和保留格式的方法

时间:2019-02-24 23:29:21

标签: r flextable

说我有2个弹性表:

ft1 <- regulartable(head(iris))
ft2 <- regulartable(tail(iris))

它们具有不同的格式:

ft1 <- bg(ft1, bg="green")
ft2 <- color(ft2, color = "blue")

在这两个已经是可伸缩的表格之后,是否有办法合并它们并保持格式?

我可以使用以下方法合并它们:

ft3 <- regulartable(rbind(ft1$body$dataset, ft2$body$dataset))

但是我丢失了所有格式。

我知道在转换为弹性表之前合并数据帧会比较容易,但是实际数据的生成方式却变得如此困难,因为我要合并的两个弹性表是我编写的其他函数的结果。

编辑:

目标是保持单独的格式,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

不太优雅,但可能会完成工作...

library(flextable)
library(magrittr)

ft1 <- regulartable(head(iris))
ft2 <- regulartable(tail(iris))

ft_formatting <- function(ft1, ft2,
                          color1 = "black", bg1 = "white", color2 = "black", bg2 = "white") {
  n_row1 <- nrow(ft1$body$dataset)
  n_row2 <- nrow(ft2$body$dataset)

  n_col1 <- ncol(ft1$body$dataset)
  n_col2 <- ncol(ft2$body$dataset)

  i_1 <- 1:n_row1
  i_2 <- n_row1+1:n_row2

  regulartable(rbind(ft1$body$dataset, ft2$body$dataset)) %>%
    bg(i = i_1, j = 1:5, bg = bg1) %>%
    color(i = i_1, j = 1:n_col1, color = color1) %>%
    bg(i = i_2, j = 1:5, bg = bg2) %>%
    color(i = i_2, j = 1:n_col2, color = color2)

}

ft_formatting(ft1, ft2, bg1 = "green", color2 = "blue")