GridExtra:将文本右对齐

时间:2016-01-23 11:36:48

标签: r gridextra

我正在使用R.的gridExtra包 我想将第二列的数字对齐到左边,而不更改第一列名称的对齐方式。可能吗? 谢谢!

library(gridExtra)
library(grid)

names=c("name1","name2","name3","long name","very long name")
values1=c(100000000,70000,20,600000000000000000,500)
values1=format(values1,big.mark=".",decimal.mark=",",scientific=FALSE)

d=data.frame(names=names,values1=values1)
g1 <- tableGrob(d)
grid.newpage()
grid.draw(g1)

enter image description here

谢谢。

3 个答案:

答案 0 :(得分:3)

使用{{3>}中访问表部分中的现有grobs的想法,您可以直接编辑gtable的grobs。

g1 <- tableGrob(d)

# identify the grobs to change 
# third column of gtable and core foreground text
id <- which(grepl("core-fg", g1$layout$name ) & g1$layout$l == 3 )

# loop through grobs and change relevant parts
for (i in id) {
      g1$grobs[[i]]$x <- unit(1, "npc")
      g1$grobs[[i]]$hjust <- 1
      }

grid.newpage()
grid.draw(g1)

gridExtra wiki

答案 1 :(得分:2)

你可以试试这个:

strlen()

enter image description here

答案 2 :(得分:1)

这是另一种选择,

g1 <-  tableGrob(d[,-2, drop=FALSE])
g2 <- tableGrob(d[,2, drop=FALSE], rows = NULL,
                theme = ttheme_default(core = list(fg_params=list(hjust=1, x=0.95))))
g <- gtable_combine(g1,g2)
grid.newpage()
grid.draw(g)

enter image description here