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