【问题标题】:Shiny App - Generate & download PPTX slides from uploaded CSVShiny App - 从上传的 CSV 生成和下载 PPTX 幻灯片
【发布时间】:2018-12-23 02:36:59
【问题描述】:

我有一个 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 中的错误:未使用的参数(数据文件

有什么建议吗?

【问题讨论】:

    标签: r shiny reporters


    【解决方案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 提取您的数据。

    【讨论】:

      【解决方案2】:

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

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

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

      您应该将这段代码移出downloadHandler 函数(但在server 函数内部),然后从传递给content 参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 2022-09-30
        • 1970-01-01
        相关资源
        最近更新 更多