[R] Writing a function that calls the gt() function

phii m@iii@g oii phiiipsmith@c@ phii m@iii@g oii phiiipsmith@c@
Mon Apr 26 02:39:56 CEST 2021


I am trying to write a function that produces a table using the gt() 
function. My reprex succeeds in producing a simple table by transposing 
a data frame and creating a table from it. But when I try to convert 
this code into a function, in order to generalize for a variety of 
different data frames, I get stuck trying to blank-out the first column 
name and make the other column names bold. How can I refer to the 
columns properly in the cols_label() function in a general way? Any help 
much appreciated. Phil

\library(gt)
library(tidyverse)

# Create example data frame
blank <- c("colnam1","colnam2","colnam3","colnam4","colnam5")
rownam1 <- 1:5
rownam2 <- rnorm(5)
df <- data.frame(blank=blank,rownam1=rownam1,rownam2=rownam2)

# Transpose the data frame and prepare it for gt()
tbl_df <- as.data.frame(t(df))
hold <- rownames(tbl_df)
colnam <- tbl_df[1,]
colnames(tbl_df) <- colnam
tbl_df <- tbl_df[2:nrow(tbl_df),]
rownames(tbl_df) <- NULL
tbl_df <- mutate(tbl_df,blank=hold[2:length(hold)])
tbl_df <- select(tbl_df,blank,everything())

# Create the gt() table - this works
gt_tbl <- gt(data=tbl_df)
gt_tbl <- tab_options(gt_tbl,table.font.size=24,
     container.width = 900)
gt_tbl <- tab_header(gt_tbl,
     title=md(html(paste0("**","Example title","**"))))
gt_tbl <- cols_align(gt_tbl,
     align=c("left"),
     columns=vars(`blank`))
gt_tbl <- cols_label(gt_tbl,
     blank="",
     colnam1=md("**colnam1**"),
     colnam2=md("**colnam2**"),
     colnam3=md("**colnam3**"),
     colnam4=md("**colnam4**"),
     colnam5=md("**colnam5**"))
gt_tbl

# Now do the same = with a function
tblfunc <- function(df) {
   gt_tbl <- gt(data=df)
   gt_tbl <- tab_options(gt_tbl,table.font.size=24,
       container.width = 900)
   gt_tbl <- tab_header(gt_tbl,
       title=md(html(paste0("**","Example title","**"))))
   gt_tbl <- cols_align(gt_tbl,
       align=c("left"),
       columns=vars(`blank`))
   gt_tbl <- cols_label(gt_tbl,
     ????)
}



More information about the R-help mailing list