如何将ggtexttable中的第二列设置为右对齐?
解决ggtexttable列右对齐的问题
嘿,刚好我之前也遇到过类似的需求,这就给你分享两种可行的方法,帮你把带负号和小数的Score列设置成右对齐:
方法一:生成表格时直接指定列对齐(推荐)
你可以自定义ttheme主题,通过col.style里的alignment参数为每一列单独设置对齐方式。比如你的数据有3列,我们给第三列(Score)设置右对齐,前两列保持左对齐:
library(ggpubr) df <- data.frame(Order = c(1:3), Name = c("Adam", "Ben", "Charlie"), Score = c(-.0041, 8.00, 9.123)) # 自定义主题,指定每列的对齐方式 custom_table_theme <- ttheme( "default", col.style = list( alignment = c("left", "left", "right") # 对应Order、Name、Score三列 ) ) # 使用自定义主题生成表格 stable.p <- ggtexttable(df, rows = NULL, theme = custom_table_theme) ggarrange(stable.p, ncol = 1, nrow = 1, heights = c(1, 1))
这样生成的表格里,Score列就会自动右对齐,负号和小数的排版会整齐很多。
方法二:修改已生成的表格grob
如果已经生成了表格对象,也可以直接修改底层的grob元素来调整对齐:
library(ggpubr) df <- data.frame(Order = c(1:3), Name = c("Adam", "Ben", "Charlie"), Score = c(-.0041, 8.00, 9.123)) stable.p <- ggtexttable(df, rows = NULL, theme = ttheme("default")) # 获取表格的核心grob元素 table_grob <- stable.p$grobs[[1]]$children[[2]] # 设置第三列(索引从1开始)为右对齐 table_grob$col_just[3] <- "right" # 把修改后的grob放回表格对象 stable.p$grobs[[1]]$children[[2]] <- table_grob ggarrange(stable.p, ncol = 1, nrow = 1, heights = c(1, 1))
两种方法都能达到你想要的效果,第一种更直观,适合在生成表格时就规划好格式;第二种适合调整已有的表格。
内容的提问来源于stack exchange,提问作者JK Lambert
相关产品推荐
相关产品推荐

