Способ объединения гибких таблиц и сохранения форматирования - PullRequest
0 голосов
/ 25 февраля 2019

Скажем, у меня есть 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 голосов
/ 25 февраля 2019

Не очень элегантно, но может сделать работу ...

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")
...