使用ReporteRs软件包生成带R的powerpoint幻灯片

使用ReporteRs软件包生成带R的powerpoint幻灯片,r,shiny,shiny-server,shinydashboard,reporters,R,Shiny,Shiny Server,Shinydashboard,Reporters,我有一个R闪亮的代码,它可以制作各种报告、词云、情绪分析和各种其他东西。现在我想通过点击一个按钮,所有这些生成的报告可以在一个单一的镜头下载并附加到ppt。例如,它应该看起来像: 幻灯片1:单词云 幻灯片2:情绪分析 幻灯片3:报告1……等等 到目前为止,我可以分别下载所有这些报告,也就是说,我在我闪亮的UI中有不同的选项卡,对于每个报告,我转到它并单击“下载”,它将由downloadHandler下载 此外,点击一下,我可以下载所有这些报告在一个pdf,即在一个页面,我有报告1等 到目前为止,

我有一个R闪亮的代码,它可以制作各种报告、词云、情绪分析和各种其他东西。现在我想通过点击一个按钮,所有这些生成的报告可以在一个单一的镜头下载并附加到ppt。例如,它应该看起来像:

幻灯片1:单词云

幻灯片2:情绪分析

幻灯片3:报告1……等等

到目前为止,我可以分别下载所有这些报告,也就是说,我在我闪亮的UI中有不同的选项卡,对于每个报告,我转到它并单击“下载”,它将由downloadHandler下载

此外,点击一下,我可以下载所有这些报告在一个pdf,即在一个页面,我有报告1等

到目前为止,我已达到以下目标:

    #downloadReport is my action button
    #on click of this button I am expecting the ppt. to be downloaded
    observeEvent(input$downloadReport, {
    # Create a PowerPoint document
    doc = pptx( )

    # Slide 1 : Title slide
    #+++++++++++++++++++++++
    doc <- addSlide(doc, "Title Slide")
    doc <- addTitle(doc,"Create a PowerPoint document from R software")
    doc <- addSubtitle(doc, "R and ReporteRs package")


   # Slide 2 : Add Word Cloud
    #+++++++++++++++++++++++
    doc <- addSlide(doc, "Title and Content")
    doc <- addTitle(doc, "Bar Plot")
    newData=rawInputData(); # Function which captures data (.csv file) when I have input it through R shiny
    words_list = strsplit(as.character(newData$CONTENT), " ") #CONTENT is the column which contains the test data
    words_per_tweet = sapply(words_list, length)
    pptwordcloud<-barplot(table(words_per_tweet), border=NA,main="Distribution of words per tweet", cex.main=1,col="darkcyan")
   #pptwordcloud<-barplot(table(words_per_tweet), col="darkcyan")
    doc <- addPlot(doc, fun= print, x = pptwordcloud,vector.graphic =FALSE ) 
    writeDoc(doc,'file1.pptx')
  })
下载报告是我的操作按钮 #点击这个按钮,我期待着ppt。下载 observeEvent(输入$downloadReport{ #创建PowerPoint文档 doc=pptx() #幻灯片1:标题幻灯片 #+++++++++++++++++++++++ doc让我们尝试复制=)

1) 我没有您的数据,所以我使用
iris
并选择用于为
表选择第二列的输入

用户界面

服务器

library(shiny)
library(DT)
library(ReporteRs)

shinyServer(function(input, output,session) {

  output$downloadData <- downloadHandler(
      filename = "file.pptx",
      content = function(file) {
        doc = pptx( )

        # Slide 1 : Title slide
        #+++++++++++++++++++++++
        doc <- addSlide(doc, "Title Slide")
        doc <- addTitle(doc,"Create a PowerPoint document from R software")
        doc <- addSubtitle(doc, "R and ReporteRs package")


        # Slide 2 : Add Word Cloud
        #+++++++++++++++++++++++
        doc <- addSlide(doc, "Title and Content")
        doc <- addTitle(doc, "Bar Plot")
        #newData=rawInputData(); # Function which captures data (.csv file) when I have input it through R shiny
        #words_list = strsplit(as.character(newData$CONTENT), " ") #CONTENT is the column which contains the test data
        #words_per_tweet = sapply(words_list, length)
        words_per_tweet=iris
        pptwordcloud<-function(){
          barplot(table(words_per_tweet[,c("Sepal.Length",input$sel)]), border=NA,main="Distribution of words per tweet", cex.main=1,col="darkcyan")
        }#pptwordcloud<-barplot(table(words_per_tweet), col="darkcyan")
        doc <- addPlot(doc, fun= pptwordcloud,vector.graphic =FALSE ) 
        writeDoc(doc,file)
       }
     )
  })
库(闪亮)
图书馆(DT)
图书馆(记者)
shinyServer(功能(输入、输出、会话){

output$downloadData@Batanichek:我意识到我的错误,现在我只使用addPlot(),因为我的worddownload()函数正在渲染plot。在进行这些更改后,我得到了新的错误。请查看编辑过的问题,让我们看看返回函数的内容(在简单的r会话中不是闪亮的)——在我的its null(
data(原油))中tdm在addPlot.pptx中可以看到“fun--plot函数。该函数将被执行以生成图形。对于grid、lattice或ggplot对象,该函数应该只是打印,并且一个额外的参数x应该指定要打印的对象。对于传统的打印,该函数应该包含打印指令。请参见示例。”@巴塔尼切克:谢谢!!问题解决了。它成功了。如果答案解决了你的问题,接受它=)事实上,最后一部分是错误的,请看下面的正确代码:doc你可以定义
条形图(表格(words\u per\u tweet[,c(“sepa.Length”,input$sel)]),border=NA,main=“words per tweet的分布”,cex.main=1,col=“darkcyan”)
作为新的绘图功能并使用它。你在测试我的代码吗?它不工作吗?
library(shiny)
library(DT)
library(ReporteRs)

shinyServer(function(input, output,session) {

  output$downloadData <- downloadHandler(
      filename = "file.pptx",
      content = function(file) {
        doc = pptx( )

        # Slide 1 : Title slide
        #+++++++++++++++++++++++
        doc <- addSlide(doc, "Title Slide")
        doc <- addTitle(doc,"Create a PowerPoint document from R software")
        doc <- addSubtitle(doc, "R and ReporteRs package")


        # Slide 2 : Add Word Cloud
        #+++++++++++++++++++++++
        doc <- addSlide(doc, "Title and Content")
        doc <- addTitle(doc, "Bar Plot")
        #newData=rawInputData(); # Function which captures data (.csv file) when I have input it through R shiny
        #words_list = strsplit(as.character(newData$CONTENT), " ") #CONTENT is the column which contains the test data
        #words_per_tweet = sapply(words_list, length)
        words_per_tweet=iris
        pptwordcloud<-function(){
          barplot(table(words_per_tweet[,c("Sepal.Length",input$sel)]), border=NA,main="Distribution of words per tweet", cex.main=1,col="darkcyan")
        }#pptwordcloud<-barplot(table(words_per_tweet), col="darkcyan")
        doc <- addPlot(doc, fun= pptwordcloud,vector.graphic =FALSE ) 
        writeDoc(doc,file)
       }
     )
  })