R flextable-如何在合并单元格下添加表宽水平边框

R flextable-如何在合并单元格下添加表宽水平边框,r,flextable,R,Flextable,合并单元格时,有没有一种聪明的方法使水平边框表变宽?(在下面的示例中,它还不是表范围) 还是应该编写一个函数来计算正确的索引 library(flextable) library(officer) library(dplyr) myft <- flextable(head(mtcars), col_keys = c("am", "carb", "gear", "mpg", "drat" ))%>% theme_vanilla()%>

合并单元格时,有没有一种聪明的方法使水平边框表变宽?(在下面的示例中,它还不是表范围)

还是应该编写一个函数来计算正确的索引

library(flextable)
library(officer)
library(dplyr)

myft <- flextable(head(mtcars), 
                  col_keys = c("am", "carb", "gear", "mpg", "drat" ))%>% 
  theme_vanilla()%>%
  merge_v(j = c("am"))%>%border(border.bottom = fp_border(style = "solid", width=2), i=c(3,6), part="body")

myft
库(flextable)
图书馆(主任)
图书馆(dplyr)
myft%
主题\u香草()%>%
合并v(j=c(“am”))%%>%border(border.bottom=fp\u border(style=“solid”,width=2),i=c(3,6),part=“body”)
myft

这是您想要的代码。它需要更多的工作才能通用-只有当列1是唯一具有合并单元格的列时,才适用该示例

library(flextable)
library(officer)
library(dplyr)

bigborder <- fp_border(style = "solid", width=2)
myft <- flextable(head(mtcars), 
                  col_keys = c("am", "carb", "gear", "mpg", "drat" ))%>% 
  theme_vanilla()%>%
  merge_v(j = c("am")) 

# here starts the trick
row_loc <- rle(cumsum( myft$body$spans$columns[,1] ))$values
myft <- myft %>% 
  border(border.bottom = bigborder, i=row_loc, j = 2:5, part="body") 
myft <- myft %>% 
  border(border.bottom = bigborder, 
         i = myft$body$spans$columns[,1] > 1, j = 1, part="body") %>% 


  border(border.bottom = bigborder, border.top = bigborder, part = "header")
myft
库(flextable)
图书馆(主任)
图书馆(dplyr)
bigborder%
合并v(j=c(“am”))
#现在开始玩这个把戏
第1行,j=1,part=“body”)%>%
边框(border.bottom=bigborder,border.top=bigborder,part=“header”)
myft

您是在谈论这个问题吗?不是真的。更多关于是否有一种开箱即用的方法以更通用的方式替换i=c(3,6)。或者,我必须编写一个函数,为合并单元格列中的每个类别确定每个类别中的观察数,并构造一个带索引的向量。如果能够以某种方式使用merge_v来确定边界的位置,那就太好了。很好的建议。我将为此提供一个函数。很好地使用了rle