Используйте R и Latex для автоматизации отчетов Powerpoint

У меня есть шаблон отчета, который я использую довольно часто. Анализ выполнен в R, но на данный момент вот мой рабочий процесс:

  1. Используйте R для запуска анализа и экспорта результатов в CSV-файлы.
  2. Используйте макросы Excel для чтения данных, управления диаграммами/создания таблиц
  3. Снова используя Excel, «автоматизируйте» диаграммы/таблицы в Powerpoint.

Чем больше я знакомлюсь с Latex, R и воспроизводимыми исследованиями, я чувствую, что должен быть способ оставаться в рамках R и отправлять свои результаты в Powerpoint. Я знаю, что есть пакет R2PPT, но я пытаюсь продумать все варианты. Я не думаю, что отправка изображений моих графиков будет проблемой, меня больше ставит в тупик создание таблицы.

Любая помощь, которую вы можете предоставить, будет принята с благодарностью! К сожалению, да, мне нужно продолжать использовать PPT.


person Btibert3    schedule 20.10.2011    source источник
comment
Если PowerPoint может импортировать PDF-файлы, вы можете создать все свои таблицы с помощью Sweave и импортировать полученные PDF-файлы в PowerPoint.   -  person Aaron left Stack Overflow    schedule 20.10.2011
comment
PowerPoint не может импортировать PDF-файлы.   -  person Steve Rindsberg    schedule 20.10.2011
comment
Это отличная идея. Есть ли способ сделать это программно?   -  person Btibert3    schedule 20.10.2011
comment
попробуйте www.pptxbuilder.com   -  person Boosted_d16    schedule 10.03.2018
comment
Только что сделал новый пакет, экспорт, который позволяет сделать именно это - смотрите мой ответ ниже!   -  person Tom Wenseleers    schedule 04.11.2018


Ответы (6)


Можете ли вы автоматизировать PowerPoint из R? Т.е. запустить его, получить доступ к объектной модели и т.д.?

Если это так, вы сможете создавать таблицы непосредственно в PPT.

person Steve Rindsberg    schedule 20.10.2011
comment
Пакет R2PPT представляет собой отличный первый шаг, но мысль может заключаться в том, что на самом деле может быть проще автоматизировать таблицу, подобную Latex, но я не уверен, как получить эту таблицу в PPT. - person Btibert3; 22.10.2011
comment
Только что просмотрел PDF-документ R2PPT. Не похоже, что это не дает вам доступ к объектной модели, который вам понадобится для создания таблиц непосредственно в PPT. Это дает вам возможность добавлять слайды и добавлять изображения на слайд, поэтому, если вы можете преобразовать свою таблицу в изображение в формате, который может импортировать PPT, вы можете его взбить. Подойдут EMF, WMF, BMP, PNG, JPG и некоторые другие. - person Steve Rindsberg; 22.10.2011
comment
Спасибо! Можно ли создать латексные таблицы и сохранить их как один из файлов изображений выше? - person Btibert3; 23.10.2011
comment
Боюсь, без понятия. Я много работаю с PPT (вручную, программно), но не знаю Latex. - person Steve Rindsberg; 24.10.2011
comment
Стив, можете ли вы привести примеры того, как вы программно взаимодействуете с PPT? - person Btibert3; 15.12.2011
comment
Я поддерживаю большой сайт часто задаваемых вопросов по PPT с несколькими примерами/советами по программированию. Загляните на сайт www.pptfaq.com и прокрутите вниз до раздела программирования, чтобы посмотреть примеры кода. - person Steve Rindsberg; 23.12.2011

Это решение зависит от того, сможете ли вы отображать PDF-файлы там, где вы обычно используете PowerPoint.

Тебе понадобится:

1) LateX 2) R 3) Латексная упаковка Beamer.

Из них единственный, который вам, возможно, придется искать, это Beamer. Затем вы можете открыть новый латексный документ, присвоить ему тип документа «beamer», а затем написать «латекс» и «R», как в статье. Отправьте код в R, получите результаты, наберите результаты, и все готово. Я не возвращался к Powerpoint с тех пор, как узнал о Beamer.

Я вижу, что вам нужно оставаться в Powerpoint, так что этот совет, вероятно, бесполезен. При этом Beamer выводит в PDF, и я провел много презентаций, где все остальные использовали PowerPoint, и у меня никогда не было проблем.

person richiemorrisroe    schedule 22.11.2011
comment
Я думаю, что это идеальное решение. После того, как вы поместите данные в PowerPoint, вы не захотите, чтобы они редактировались. Кто готовит книги, верно? LaTeX - Beamer дает вам отличный контроль и контент только для чтения. - person EngrStudent; 26.01.2014

Взгляните на sweave и odfSweave. Вы можете создавать отчеты R в виде pdf-файлов, используя sweave, а затем копировать/вставлять в PowerPoint, или использовать odfweave для создания отчета в виде odt-файла LibreOffice, затем открывать его и копировать/вставлять в PowerPoint из LibreOffice.

person PaulHurleyuk    schedule 20.10.2011
comment
Хотя он указан как экспериментальный, вы можете попробовать использовать odfWeave для записи в файл odp и просто использовать Impress или, возможно, PowerPoint для преобразования файла в ppt. - person Brian Diggs; 21.10.2011
comment
Спасибо за ответ. В идеале все должно быть автоматизировано программно; нулевое ручное вмешательство. Я подвергался воздействию sweave, и я думаю, что это фантастика, но на выходе должна быть колода PPT. R2PPT — это пакет, который в какой-то степени облегчает это, я не понимаю, как создать таблицу, похожую на латекс, в PPT. Изображение было бы хорошо, если бы это было возможно. - person Btibert3; 22.10.2011
comment
Есть несколько пакетов, которые предлагают графический вывод для таблиц. См. grid.table() в пакете gridExtra некоторые примеры. - person baptiste; 22.11.2011

Возможно, R2PPT - лучшее решение. Другой вариант, который я начинаю изучать, — это создание сценария Visual Basic (.vbs), который открывает Powerpoint, вставляет слайды и вставляет EMF, сгенерированные R.

person Karsten W.    schedule 14.04.2012

Пакет ReporteRs предназначен именно для этого рабочего процесса. Если ваш вывод может быть в формате pdf или html, обязательно рассмотрите knitr или slidify, которые не поддерживают .pptx. Но вот пример использования ReporteRs:

library('ReporteRs')

# set default font size to 24
options( "ReporteRs-fontsize" = 24 )

doc = pptx( )

# add a slide with layout "Title Slide"
doc = addSlide( doc, slide.layout = "Title Slide" )
#set the main title
doc = addTitle( doc, "Presentation About Cars" ) 

# add a slide with layout "Title and Content" then add content
doc = addSlide( doc, slide.layout = "Title and Content" )
doc = addTitle( doc, "Cars dataset", level = 1 )
data(mtcars)

library('ggplot2')
car_plot <- ggplot(mtcars, aes(x=hp, y=mpg, col=cyl)) + 
              geom_point() + geom_smooth() + 
              xlab('Horsepower (Hp)') + ylab('Miles per Gallon (MpG')


doc = addPlot( doc = doc, fun=print, x = car_plot )

doc = addSlide( doc, slide.layout = "Title and Content" )
doc = addTitle( doc, "More about cars dataset", level = 1 )
doc = addParagraph(doc, paste("The correlation between Hp and MpG is",
                              round(with(mtcars, cor(hp, mpg)),3))
                   )

writeDoc( doc, file = "presentation_about_cars.pptx" )
person C8H10N4O2    schedule 05.02.2016

Взгляните на мой новый экспортный пакет, который только что вышел из CRAN и позволяет экспортировать графики и статистические таблицы из R в Powerpoint и Word. См. https://cran.r-project.org/web/packages/export/index.html и https://github.com/tomwenseleers/export .

Например:

install.packages("export")
library(export)

## export of ggplot2 plot
library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))
# export to Powerpoint      
graph2ppt(file="ggplot2_plot.pptx", width=7, height=6) 
# export to Word
graph2doc(file="ggplot2_plot.docx", width=7, height=6)

## export of aov Anova output as table
fit=aov(yield ~ block + N * P + K, npk)
x=summary(fit)
# export to Powerpoint
table2ppt(x=x,file="table_aov.pptx")
table2ppt(x=x,file="table_aov.pptx",digits=4,append=TRUE)
table2ppt(x=x,file="table_aov.pptx",digits=4,digitspvals=1,
          font="Times New Roman",pointsize=16,append=TRUE)
# export to Word
table2doc(x=x)
# export to Excel
table2excel(x=x, file = "table_aov.xlsx",digits=4,digitspvals=1,
            sheetName = "Anova_table", add.rownames = TRUE)
# export to Latex
table2tex(x=x)
person Tom Wenseleers    schedule 03.11.2018