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



我有一个R脚本,它通过从csv文件编译数据,在powerpoint幻灯片上生成各种图形。我正试图将其转换为一个闪亮的应用程序,该应用程序在上传csv文件后生成deck,但不知道如何读取csv文件,然后生成pptx下载。

这是我的UI:

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)

当引用本地文件时,代码会生成一个deck。当我上传文件时,我会收到下面的错误。我还将数据文件部分移到了下载处理程序之外,但之后什么也没发生。

警告:downloadHandler中出错:未使用的参数(数据文件<-reflective({inFile<-输入$file3if(is.null(inFile((返回(null(read.csv(在文件$datapath中,na.strings="null"(}))

有什么建议吗?

我通常通过将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提取数据。

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新