我有一个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”) }))
有什么建议吗?
答案 0 :(得分:1)
我通常通过将reactiveValues
与observeEvent
一起使用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
参数。