2016-03-31 10 views
3

私は様々なレポート、言葉の雲、感情の分析や様々なことを行う光沢のあるコードを持っています。ボタンをクリックするだけで、生成されたこれらのすべてのレポートをワンショットでダウンロードしてpptに添付することができます。ReporteRsパッケージを使用してR Shinyでパワーポイントスライドを生成

スライド2ワードクラウド:評判分析

スライド3:私は、1の報告...と今までように

スライド1:だから、例えばそれは次のようになります。つまり、私はすべてのレポートのために、私のShiny UIに異なるタブを持っています。私はそれをクリックして "Download"をクリックすると、downloadHandlerによってダウンロードされます。

また、これらのレポートをすべて1つのpdfにダウンロードすることができます。つまり、1ページにレポート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を。生成されていますが、vector.graphic =FALSEをオプションとして使用すると、バープロットが表示されません。私はこれを削除した場合、私はこのエラーを取得しています

警告: javax.xml.bind.UnmarshalException - リンクされた例外を持つ:オブザーバーで未処理のエラー[org.xml.sax.SAXParseException:でマークアップルート要素の前の文書は整形式でなければなりません。] observeEvent(入力の$ downloadReport)

誰かが私の誤りを指摘することができます。

+0

@Batanichek:元の質問で編集しました –

+0

@Batanichek:私は間違いをrealziedしました。私はworddownload()関数がプロットを描画しているので、addPlot()を使用しています。これらの変更を行った後、新しいエラーが発生しています。編集した質問 –

+0

を参照してください。私のnull( 'data(crude) tdm < - TermDocumentMatrix(粗) m <-as.matrix( TDM); word.freq <-sort(rowSums(M)、減少= TRUE); 最小= 4 P <-wordcloud(ワード=名(word.freq)、FREQ = word.freq、min.freq =最小、random.order = FALSE、colors = brewer.pal(8、 "Dark2")、main = "Title") p ')。だから本当にpngとaddImageよりfucntion save plotでもっと良いかもしれませんか? – Batanichek

答えて

6

私はirisを使用して、あなたのデータをhaventはしてtable

UI

library(shiny) 


shinyUI(

    # Use a fluid Bootstrap layout 
    fluidPage( 
    selectInput("sel",label = "col",choices = colnames(iris)[2:ncol(iris)]), 
    downloadButton('downloadData', 'Download') 

) 
) 

サーバー

のためのチョイス秒colunmのために使用される入力を選択)

1)=再現してみましょう

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) 
     } 
    ) 
    }) 
+0

実際に最後の部分が間違っています。下記の正しいコードを参照してください。 doc < - addPlot border = NA、main = "ツイートごとの単語の分布"、cex.main = 1、col = "darkcyan")、vector.graphic = FALSE) @batanichek:あなたのコメントで、「グリッドまたは格子またはggplotオブジェクトの場合、関数は単に出力され、余分な引数xはオブジェクトを指定する必要がありますplot.For traditionnal plotの場合、関数にはプロットの指示が含まれていなければなりません "この部分は私とReporteRsパッケージのドキュメントを手助けしました –

+0

' barplot(table(wor新規のプロット関数としてds_per_tweet [、c( "Sepal.Length"、input $ sel)])、border = NA、main = "ツイートごとの単語の分布"、cex.main = 1、col = "darkcyan")これを使って。私のコードをテストしていますか?それは仕事ではありませんか? – Batanichek

関連する問題