GridExtra: Выровнять текст по правому краю

Я использую пакет gridExtra R.
Я хочу выровнять номера второго столбца по левому краю, не меняя выравнивание имен первого столбца. Является ли это возможным? Благодарю вас!

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)

введите здесь описание изображения

Спасибо.


person John M    schedule 23.01.2016    source источник


Ответы (3)


Используя идею из раздела Доступ к существующим гробам в таблице статьи gridExtra wiki, вы можете редактировать файлы gtable напрямую.

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)

введите здесь описание изображения

person user20650    schedule 23.01.2016

Вы можете попробовать это:

library(gridExtra)
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[,1, drop = FALSE])
tt2 <- ttheme_default(core = list(fg_params=list(hjust=1, x=1)),
                      rowhead = list(fg_params=list(hjust=1, x=1)))
g2 <- tableGrob(d[,2, drop = FALSE], rows = NULL, theme = tt2)

grid.arrange(arrangeGrob(grobs = list(g1, g2 ), nrow = 1) , widths = c(1,1))

введите здесь описание изображения

person Mamoun Benghezal    schedule 23.01.2016

Вот еще вариант,

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)

введите здесь описание изображения

person baptiste    schedule 24.01.2016