闪亮的应用程序-从上传的CSV生成并下载PPTX幻灯片

时间:2018-07-15 08:38:49

标签: r shiny reporters

我有一个R脚本,它通过编译csv文件中的数据在powerpoint幻灯片上生成各种图形。我正在尝试将其转换为一个闪亮的应用程序,该应用程序在上载csv文件后会生成套牌,但无法弄清楚如何读取csv文件然后生成pptx下载。

这是我的用户界面:

ui <- (fluidPage(
  titlePanel("Title"),
  title = "File Upload",

  sidebarLayout(
    sidebarPanel(
      fileInput("file1", "File1:",
                accept = c("text/csv", "text/comma-separated-values, 
text/plain", ".csv")),
    ),
mainPanel(
  downloadButton('downloadData', 'Download')
    )

  )
)
  )

我的服务器功能:

server<- function(input, output,session) {

 output$downloadData <- downloadHandler(
data_file <- reactive({
  inFile <- input$file1
  if (is.null(inFile)) return(NULL)
  read.csv(inFile$datapath, na.strings = "null")
}),


filename = "file.pptx",

content = function(file)

当引用本地文件时,代码将生成一个卡片组。当我上传文件时,出现以下错误。我也将数据文件部分移到了下载处理程序之外,但是什么也没发生。

  

警告:downloadHandler错误:未使用的参数(数据文件<-反应性({      inFile <-input $ file3      如果(is.null(inFile))返回(NULL)      read.csv(inFile $ datapath,na.strings =“ null”)   }))

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我通常通过将reactiveValuesobserveEvent一起使用reactive来避免这种情况。

server <- function(input, output){
r_values <- reactiveValues(data=NULL) # reactive values just acts as a list

    observeEvent(input$file1,{
        req(input$file1)
        df <- read.csv(input$file1$datapath)
    })
}

然后,您可以使用r_values$data提取数据。

答案 1 :(得分:0)

您遇到的问题是downloadHandler与所有函数一样,仅接受其帮助文件中描述的特定参数:?downloadHandler

downloadHandler(filename, content, contentType = NA, outputArgs = list())

通过在函数调用中粘贴R代码块(data_file <- reactive({...),R将代码视为参数,并试图弄清楚如何将其传递给函数。由于它是第一个参数,因此通常会尝试将其传递给第一个参数filename(这会产生错误,因为filename接受字符串,而不是R表达式),但是您已经在稍后的调用中使用命名参数定义了filename,因此R不知道如何处理此参数并返回unused argument错误。

您应将此代码块移至downloadHandler函数的外部 (但应放在server函数的内部),然后从函数内部调用反应表达式的值您将传递到content参数。