2 years ago
#336357
reidj
Flextable ignores cell width arguments in R
I have a dataframe in R that I have converted to a Flextable. It looks okay, but I need to manually set the column widths. I've tried to accomplish this several ways and so far have not been successful. What I find especially odd is that when I run dim(myflextable) to look at the dimensions, the returned values are what I've set them as but the Flextable itself does not have those dimensions. Any insight would be appreciated.
dataframe + libraries
library(dplyr)
library(flextable)
library(officer)
extractionWS <- structure(list(Sample = c(12740L, 13231L, 13232L, 13233L, 13234L), 
                             Full.name = c("Method Negative Control In Vitro Extraction 600 uL RLT-TCEP 23", 
                                           "G-A12-T5_7H9tw_co2_0-05_p0-8_b0-8_48h_tube49", 
                                           "G-A12-T4_7H9tw_co2_0-05_p0-8_b0-8_h0-1_96h_tube90",
                                           "G-A13-T3_7H9tw_co2_0-05_untx_192h_tube71", 
                                           "G-A12-T5_7H9tw_co2_0-05_p0-8_b0-8_opc0-00195_48h_tube77"),
                             Providing.lab.key = c(NA, "VOS22_00349", 
                                                   "VOS22_00290", 
                                                   "VOS22_00675", 
                                                   "VOS22_00377"), 
                             kitshelf = c("", "", "", "", ""), 
                             kitbox = c(8, 8, 8, 8, 8), 
                             kitpos = c("A1", "A2", "A3", "A4", "A5"), 
                             extractdate = c("", "", "", "", ""), 
                             concentration = c("", "", "", "", ""), 
                             rnashelf = c("", "", "", "", ""), 
                             rnabox = c("", "", "", "", ""), 
                             rnapos = c("", "", "", "", ""), 
                             comment = c("", "", "", "", "")), 
                        class = "data.frame", row.names = c(NA, -5L))
extractionWS <- extractionWS   %>%
    setNames(c("WL Number", 'Full Name', "Providing Lab Key",
               "Kit Shelf", "Kit Box", "Kit Position",
               "Extraction Date", "RNA Conc. (ng/ul)",
               "Extracted RNA Shelf", "Extracted RNA Box","Extracted RNA Position", "Comment"))
flextable format attempt
 #Create flextable
  worksheet <- flextable(extractionWS)
  
  #font style
  worksheet <- bold(worksheet, bold = TRUE, part="header")
  worksheet <- align(worksheet, align = "center", part = "all") 
  worksheet <- colformat_num(worksheet, big.mark="")
  
  #border
  border.outer = fp_border(color="black", width=2.5)
  border.horizontal = fp_border(color="black", width=1.5)
  border.vertical = fp_border(color="black", width=1.5)
  worksheet <- border_outer(worksheet, border=border.outer, part="all")
  worksheet <- border_inner_h(worksheet, part="all", border = border.horizontal)
  worksheet <- border_inner_v(worksheet, part="all", border = border.vertical)
  
  #Set fontsize
  worksheet <- fontsize(worksheet, size = 12, part = "body")
  worksheet <- fontsize(worksheet, j = 2, size = 8, part = "body")
  
  #dimensions
  worksheet <- width(worksheet, 12, width = 6)
dim(worksheet) output - indicates I successfully changed the column width:
$widths
           WL.num         Full.name Providing.lab.key          kitshelf            kitbox 
             0.75              0.75              0.75              0.75              0.75 
           kitpos       extractdate     concentration          rnashelf            rnabox 
             0.75              0.75              0.75              0.75              0.75 
           rnapos           comment      Kit Position 
             0.75              6.00              0.75 
But this is not reflected in the table:
Sorry if I'm missing something obvious, I've spent a lot of time on this simple thing and gone over the documentation but haven't been able to find a solution.
r
flextable
0 Answers
Your Answer
