如何将gt表格的Stub(行首栏)移至右侧并实现镜像布局?
实现gt表格的镜像布局(Stub移至右侧)
解决代码
library(gt) # 你的示例数据集 example <- structure(list(pos = c("QB", "RB", "WR", "TE", "RB", "DEF"), team = c("PHI", "DAL", "PHI", "PHI", "WAS", "DAL"), name = c("Jalen Hurts", "Tony Pollard", "A.J. Brown", "Dallas Goedert", "Antonio Gibson", " Cowboys"), points = c(0, 0, 0, 0, 0, 0), division = c("NFC East", "NFC East", "NFC East", "NFC East", "NFC East", "NFC East" )), class = "data.frame", row.names = c(NA, -6L)) # 1. 反转列顺序,把原Stub列(name)放到最后 example_reversed <- example[, rev(colnames(example))] # 2. 创建gt表格并调整布局 gt(example_reversed) %>% # 将最后一列设为Stub cols_to_stub(columns = name) %>% # 用CSS实现镜像布局 opt_css( " .gt_table_body { display: flex; flex-direction: row-reverse; } .gt_col_heading { display: flex; flex-direction: row-reverse; } .gt_stub { border-left: 1px solid #ccc; border-right: none; } .gt_table_body .gt_row { flex-direction: row-reverse; } " ) %>% # 调整表头文本对齐(可选,根据需求调整) tab_style( style = cell_text(align = "right"), locations = cells_column_labels(columns = everything()) )
关键步骤说明
- 反转列顺序:把数据列倒序排列,让原本的Stub列(
name)处于最后,方便设置为行首栏。 - CSS镜像布局:通过flex布局的
row-reverse属性,反转表格主体和表头的排列方向,同时调整Stub的边框样式,让它显示在表格右侧。 - 可选对齐调整:如果需要调整表头文本对齐,可通过
tab_style设置,忽略文本对齐的话可以删掉这部分。
内容的提问来源于stack exchange,提问作者Kent Weyrauch
相关产品推荐
相关产品推荐

