Я создал форматированную таблицу в RStudio с помощью пакета gt и готов ее экспортировать. Моя проблема в том, что когда я запускаю функцию gtsave() и указываю, что мой выходной файл является файлом .docx, я успешно получаю выходные данные, но выходные данные не сохраняют ни одного форматирования, для которого я закодировал:
«Успешный» вывод:
Я попытался добавить пакеты webshot2 и rmarkdown, чтобы экспортировать с сохранением форматирования, и он начал выдавать ошибку.
Код:
library(tidyverse)
library(ggplot2)
library(gt)
library(webshot2)
library(rmarkdown)
sampletabledata<-read_csv('sampledata.csv')
gt_sampletabledata<-gt(sampletabledata)
gt_sampletabledata|>tab_header(title = "Count of Households with Pets")%>%
opt_align_table_header(align='left')%>%
tab_spanner(label = "Fiscal Year", columns=c(`15/16`,`16/17`,`17/18`,`18/19`,`19/20`,`20/21`,`21/22`,`22/23`,`23/24`))%>%
tab_style(style=list(cell_text(color='#F76900',weight = 'bold')),locations=cells_column_labels())%>%
tab_style(style=list(cell_text(color='#000E54',weight = 'bold')),locations=cells_body(col=1))%>%
tab_style(style=list(cell_text(color='#F76900',weight = 'bold')),locations=cells_column_spanners())%>%
opt_table_font(google_font(name='Aptos'))
gtsave(gt_sampletabledata, 'gt_sampledata.docx')
Ошибка:
Unknown output format doc
Pandoc can convert to DOCX, but not to DOC.
Error: pandoc document conversion failed with error 22
Это желаемый результат (скриншот из RStudio Viewer):
Это используемый набор данных (для целей устранения неполадок): https://github.com/mrkeville/stackoverflowassist
Я верю, что все пакеты обновлены. Что касается первого, можете ли вы объяснить подробнее, почему форматированный объект нельзя назначить gt_sampletabledata? Нужно ли мне присвоить его новой переменной?
Форматы таблиц не «сохраняются» в конце передаваемых по конвейеру команд. Попробуйте изменить последнюю строку на: opt_table_font(google_font(name='Aptos')) |> gt_sampletabledata
Оцените настройку! К сожалению, когда я добавил эту строку, возникла новая ошибка: Error in gt_sampletabledata : The pipe operator requires a function call as RHS (<input>:9:48)
Извините, добавленная труба должна была быть правильным назначением.
Это сработало! У него все еще было несколько несоответствий в форматировании, но теперь он намного ближе к желаемому результату. Почему работает присвоение ее обратно исходной переменной, указанной в верхней части блока кода dplyr? Как-то странно назначать его снова, когда он уже был назначен (не жалуюсь, потому что это работает, просто любопытно). Огромное спасибо!
Благодаря DavoOZ за решение, мне не хватало сохранения форматов обратно в исходную переменную в конце конвейерного кода dplyr. Добавление правильной трубы назначения <-
является ключевым моментом. Вот обновленный код:
library(tidyverse)
library(gt)
sampletabledata<-read_csv('sampledata.csv')
gt_sampletabledata<-gt(sampletabledata)
gt_sampletabledata <- gt_sampletabledata%>%
tab_header(title = "Count of Households with Pets")%>%
opt_align_table_header(align='left')%>%
tab_spanner(label = "Fiscal Year", columns=c(`15/16`,`16/17`,`17/18`,`18/19`,`19/20`,`20/21`,`21/22`,`22/23`,`23/24`))%>%
tab_style(style=list(cell_text(color='#F76900',weight = 'bold')),locations=cells_column_labels())%>%
tab_style(style=list(cell_text(color='#000E54',weight = 'bold')),locations=cells_body(col=1))%>%
tab_style(style=list(cell_text(color='#F76900',weight = 'bold')),locations=cells_column_spanners())%>%
tab_options(table_body.vlines.color=NULL, table.border.left.color=NULL,table.border.right.color = NULL)%>%
opt_table_font(google_font(name='Aptos'))-> gt_sampletabledata
gtsave(gt_sampletabledata,'gt_sampledata.docx')
Вот результат (не идеальный, но ближе к тому, что я хотел):Обновленный результат
Здесь происходят две вещи: форматированный объект не назначен gt_sampletabledata; плюс тип выходного файла (DOCX) не распознается. Что касается последнего, все ли пакеты обновлены? Какая версия Р? Публикация данных, вероятно, вызовет дополнительную помощь.