R - указать столбцы в grid.table жирным шрифтом

У меня есть таблица с 3 столбцами, и я использую grid.table для создания версии в формате PDF. Я хочу, чтобы два из этих столбцов были выделены жирным шрифтом, а другой - как обычный текст. Я не нашел общего решения для этого, страница крана grid.table показывает только, как редактировать шрифт для строк или определенных ячеек.

Используя небольшой выборочный набор данных (из-за чувствительности):

> dput(Data)
structure(list(Location = structure(c(1L, 1L, 1L, 2L, 2L, 3L), .Label = c("A", "B", "C"), class = "factor"), 
Subloc = structure(1:6, .Label = c("A1","A2", "A3", "B1", "B2", "C1"), 
class = "factor"), Type = structure(c(3L,3L, 3L, 1L, 1L, 2L), 
.Label = c("Alpha", "Beta", "Meta"), 
class = "factor")), 
class = "data.frame", 
row.names = c(NA, -6L))

Мой существующий код:

    maxrow <- c(30);
    npages <- ceiling(nrow(Data)/maxrow);
    pdf(paste0("DATE.pdf"), height = 11, width = 10)
    idx <- seq(1, maxrow)
    grid.table(Data[idx, ], rows = NULL, theme = ttheme_minimal(core=list(fg_params=list(hjust=0, x=0.1, fontface = c("bold"))),
                                                           rowhead=list(fg_params=list(hjust=0, x=0)), colhead=list(fg_params=list(fontsize = 14, col="#660066", fontface="bold"))))
    for (i in 2:npages){
     grid.newpage();
    if(i*maxrow <= nrow(Data)) {
    idx <- seq(1+((i-1)*maxrow), i*maxrow)}  else{
       idx <- seq(1+((i-1)*maxrow), nrow(Data))}grid.table(Data[idx,], rows =NULL,theme = ttheme_minimal(core=list(fg_params=list(hjust=0, x=0.1)), rowhead=list(fg_params=list(hjust=0, x=0)),colhead=list(fg_params=list(fontsize = 14, col="#660066", fontface="bold"))))
}dev.off()

Я хочу, чтобы данные в столбцах «Местоположение» и «Тип» (а не в заголовках столбцов) были выделены жирным шрифтом. Мне удалось выделить все содержимое столбцов полужирным шрифтом в оболочке fg_params=list, но я не знаю, как указать столбцы, для которых я хочу использовать эту обработку.


person Pryore    schedule 21.11.2018    source источник


Ответы (1)


попробуй это

library(gridExtra)

tt <- ttheme_default()
tt$core$fg_params <- list(fontface=matrix(c(1,2,3), ncol=ncol(d),nrow=nrow(d),byrow=TRUE))

grid.table(d, theme=tt)

Вывод кода:

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

person user10697133    schedule 23.11.2018
comment
Привет @ user10697133 Это классный первый ответ! Учтите также, что @Pryore хотел бы, чтобы заголовки были напечатаны обычным шрифтом, поэтому в ваш ответ можно было бы включить что-то вроде этого list(fg_params=list(fontface='plain')) для colhead. - person Valentin; 25.11.2018
comment
@ user10697133, спасибо за ваш вклад. Только одно: как мне указать шрифт любого из этих трех столбцов. Сам по себе ваш код не выделяет мой первый и второй столбцы жирным шрифтом. Может я что-то упускаю, не могли бы вы уточнить, пожалуйста? - person Pryore; 26.11.2018
comment
В основном я пытался назначить шрифт матричным индексам после использования кода, который вы написали для меня, то есть tt$core$fg_params <- list(fontface = c("bold","plain","bold")), но это преобразует основной текст по строке, где каждая 1-я и 3-я строки моих данных выделены жирным шрифтом, а не по столбцу. Спасибо за вашу помощь еще раз - person Pryore; 26.11.2018
comment
@Pryore, вот почему вам нужна матрица (того же размера, что и ваш основной контент); вектор будет переработан построчно. - person user10697133; 26.11.2018
comment
Он работает с образцами данных, которые я дал, но возникают проблемы с моим основным набором данных. Кажется, что происходит, когда матрица (с использованием предложенного вами индекса c (1,2,3)) генерируется правильно, фактических эстетических изменений не происходит. Вместо этого все основное содержимое по умолчанию представляет собой обычный текст. Поэтому я попробовал альтернативу c (жирный, простой, жирный), и все в моей таблице стало жирным. - person Pryore; 27.11.2018
comment
@user10697133 user10697133, похоже, это как-то связано с переменной idx и подмножеством - person Pryore; 27.11.2018