Nano Hash - криптовалюты, майнинг, программирование

форматирование tableGrob

У меня есть следующая таблица в R (ниже в формате csv). Поскольку их много, и мне нужно, чтобы они были отформатированы, я попытался использовать tableGrob, чтобы сэкономить много времени, но мне нужен вывод в очень конкретном формате, включая шрифт Calibri (также ниже).

"2015\набрил","2016\набрил","2017\нмарзо","2017\набрил"

"Педидос",-23,3,-13,8,-26,-39

«Экзистенции», 7.6,1.2,5.3,10.5

"Экспектативас",30.7,32.7,28.7,24

«ИСИ»,-0,1,5,9,-0,9,-8,5

"ICI Desest*",0.4,5.7,-3.2,-6.9

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

Однако каждый раз, когда я пытаюсь отредактировать тему и распечатать таблицу, я получаю эту ошибку.

library(gridExtra)
t1 <- ttheme_default(core=list(
       fg_params=list(fontface=c(rep("plain", 4), "bold.italic")),
       bg_params = list(fill=c(rep(c("grey95", "grey90"),
                               length.out=4), "#6BAED6"),
                    alpha = rep(c(1,0.5), each=5))
))

t  <- tableGrob(tabla_fin)
grid.table(t, theme = t1)

Ошибка в массиве (x, c (длина (x), 1L), если (! is.null (имена (x))) список (имена (x), : dims [product 60] не соответствуют длине объекта [ 12]

Буду признателен за любую помощь. Благодарю вас!

07.06.2017

  • Я не знаю, что предложить без воспроизводимого примера, но grid.table(tabla_fin, theme = t1) имело бы гораздо больше смысла, чем ваш текущий код. 07.06.2017

Ответы:


1

Вот несколько идей, которые могут быть полезны для решения вашей проблемы.

library(grid)
library(gridExtra)
library(gtable)

# Build table
tabla_fin <- rbind(
c("","2015\nabril","2016\nabril","2017\nmarzo","2017\nabril"),
c("Pedidos",-23.3,-13.8,-26,-39),
c("Existencias",7.6,1.2,5.3,10.5),
c("Expectativas",30.7,32.7,28.7,24),
c("ICI",-0.1,5.9,-0.9,-8.5),
c("ICI Desest*",0.4,5.7,-3.2,-6.9))

colnames(tabla_fin) <- tabla_fin[1,]
tabla_fin <- tabla_fin[-1,]

rownames(tabla_fin) <- tabla_fin[,1]
tabla_fin <- tabla_fin[,-1]

print(tabla_fin)

#              2015\nabril 2016\nabril 2017\nmarzo 2017\nabril
# Pedidos      "-23.3"     "-13.8"     "-26"       "-39"      
# Existencias  "7.6"       "1.2"       "5.3"       "10.5"     
# Expectativas "30.7"      "32.7"      "28.7"      "24"       
# ICI          "-0.1"      "5.9"       "-0.9"      "-8.5"     
# ICI Desest*  "0.4"       "5.7"       "-3.2"      "-6.9"


# Install Calibri font using the extrafont package
# read the help of font_install()
library(extrafont)
loadfonts(device="win")
# font_install()

# Theme for text tables
t1 <- ttheme_default(
        core=list(
         fg_params=list(fontface=rep("plain", 6), fontfamily="Calibri",
                      x=1, hjust=1),
         bg_params = list(
                     fill=c(rep("white",3),"grey80","grey90"),
                     col=c("white","white","white","grey80","grey90"),
                     alpha = rep(1,5))
        ),
        rowhead=list(
         fg_params=list(x=0, hjust=0, fontface="plain", fontfamily="Calibri"),
         bg_params = list(
                     fill=c("white",rep("white",3),"grey80","grey90"),
                     col=c("white","white","white","white","grey80","grey90"),
                     alpha = rep(1,5))
        ),
        colhead=list(
         fg_params=list(fontface="plain",fontfamily="Calibri"),
         bg_params = list(
                     fill="grey70",
                     col="grey70",
                     alpha = rep(1,5))
        )
)

# Create gtable containing text grobs
t  <- tableGrob(tabla_fin, theme=t1)

# Add horizontal and vertical lines
t <- gtable_add_grob(t,
        grobs = segmentsGrob( # line across the bottom
            x0 = unit(0,"npc"),
            y0 = unit(0,"npc"),
            x1 = unit(1,"npc"),
            y1 = unit(0,"npc"),
            gp = gpar(lwd = 4.0)),
        t = 1, b = 1, l = 1, r = ncol(t))
t <- gtable_add_grob(t,
        grobs = segmentsGrob( # line across the bottom
            x0 = unit(0,"npc"),
            y0 = unit(0,"npc"),
            x1 = unit(1,"npc"),
            y1 = unit(0,"npc"),
            gp = gpar(lwd = 4.0)),
        t = 4, b = 4, l = 1, r = ncol(t))
t <- gtable_add_grob(t,
        grobs = segmentsGrob( # line across the bottom
            x0 = unit(0,"npc"),
            y0 = unit(0,"npc"),
            x1 = unit(0,"npc"),
            y1 = unit(1,"npc"),
            gp = gpar(lwd = 4.0)),
        t = 1, b = nrow(t), l = 4, r =4)

# Draw table
grid.newpage()
grid.draw(t)

Вот таблица:

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

08.06.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..