从Shiny应用程序下载输出(需要一些建议)

从Shiny应用程序下载输出(需要一些建议),shiny,Shiny,我想下载我制作的这个应用程序的输出,但是有一个错误,当我打开下载的数据时,它是空的。我通过output$other\u val\u show创建了一个数据集,我想下载它。有什么建议吗 为UI部分输入以下代码。 library(shiny) library(quantreg) library(quantregGrowth) library(plotly) library(rsconnect) library(ggplot2) library(lattice) ui = tagList(

我想下载我制作的这个应用程序的输出,但是有一个错误,当我打开下载的数据时,它是空的。我通过output$other\u val\u show创建了一个数据集,我想下载它。有什么建议吗

为UI部分输入以下代码。

library(shiny)
library(quantreg)
library(quantregGrowth)
library(plotly)
library(rsconnect)
library(ggplot2)
library(lattice)

    ui = tagList(
      tags$head(tags$style(HTML("body{ background: aliceblue; }"))),
      navbarPage(title="",
                 tabPanel("Data Import",
                          sidebarLayout(sidebarPanel( fileInput("file","Upload your CSV",multiple = FALSE),
                                                      tags$hr(),
                                                      h5(helpText("Select the read.table parameters below")),
                                                      checkboxInput(inputId = 'header', label = 'Header', value = FALSE),
                                                      checkboxInput(inputId = "stringAsFactors", "StringAsFactors", FALSE),
                                                      radioButtons (inputId = 'sep', label = 'Separator', 
                                                                    choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',')
                          ),
                          mainPanel(uiOutput("tb1"))
                          )),
                 tabPanel("Interval",
                          sidebarLayout(sidebarPanel(
                            uiOutput("model_select"),
                            uiOutput("var1_select"),
                            uiOutput("rest_var_select"),
                            #uiOutput("testText1"), br(),
                            #textInput("Smooting Parameter min value", "Smooting Parameter max value", value = "")                        
                            sliderInput("range", "Smooth Parameter range:",min = 0, max = 1000, value = c(0,100)),
                            downloadButton('downloadData', 'Download')
                          ),
                          mainPanel(helpText("Selected variables and Fitted values"),
                                    verbatimTextOutput("other_val_show")))),
                 tabPanel("Model Summary", verbatimTextOutput("summary")), 
                 tabPanel("Scatterplot", plotOutput("scatterplot"))#, # Plot
                 #tabPanel("Distribution", # Plots of distributions
                 #fluidRow(
                 #column(6, plotOutput("distribution1")),
                 #column(6, plotOutput("distribution2")))
                 #)             
                 ,inverse = TRUE,position="static-top",theme ="bootstrap.css"))
server<-function(input,output) { 
  data <- reactive({
    lower <- input$range[1]
    upper <- input$range[2]
    file1 <- input$file
    if(is.null(file1)){return()} 
    read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)

  })  
  output$table <- renderTable({
    if(is.null(data())){return ()}
    data()
  })
  output$tb1 <- renderUI({
    tableOutput("table")
  })
  #output$model_select<-renderUI({
  #selectInput("modelselect","Select Algo",choices = c("Reference Interval"="Model")) 
  #})
  output$var1_select<-renderUI({
    selectInput("ind_var_select","Select Independent Variable", choices =as.list(names(data())),multiple = FALSE)
  })
  output$rest_var_select<-renderUI({
    checkboxGroupInput("other_var_select","Select Dependent Variable",choices =as.list(names(data()))) #Select other Var
  })
  output$other_val_show<-renderPrint({
    input$other_var_select
    input$ind_var_select
    f<-data()
    lower <- input$range[1]
    upper <- input$range[2]
    library(caret)
    library(quantregGrowth)
    dep_vars    <- paste0(input$ind_var_select, collapse = "+")
    after_tilde <- paste0("ps(", dep_vars, ", lambda = seq(",lower,",",upper,",l=100))")
    dyn_string  <- paste0(input$other_var_select, " ~ ", after_tilde)
    Model<-quantregGrowth::gcrq(as.formula(dyn_string),tau=c(0.025,0.975), data=f)
    temp <- data.frame(Model$fitted)
    gr <- cbind(f, temp)
    print(gr)
  })

output$downloadData <- downloadHandler(    
  write.csv(gr, file, row.names = FALSE)
  )
}
shinyApp(ui=ui,server=server)
服务器部分的以下代码。(我想下载“gr”输出,我想通过
downloadHandler
功能下载它。

library(shiny)
library(quantreg)
library(quantregGrowth)
library(plotly)
library(rsconnect)
library(ggplot2)
library(lattice)

    ui = tagList(
      tags$head(tags$style(HTML("body{ background: aliceblue; }"))),
      navbarPage(title="",
                 tabPanel("Data Import",
                          sidebarLayout(sidebarPanel( fileInput("file","Upload your CSV",multiple = FALSE),
                                                      tags$hr(),
                                                      h5(helpText("Select the read.table parameters below")),
                                                      checkboxInput(inputId = 'header', label = 'Header', value = FALSE),
                                                      checkboxInput(inputId = "stringAsFactors", "StringAsFactors", FALSE),
                                                      radioButtons (inputId = 'sep', label = 'Separator', 
                                                                    choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',')
                          ),
                          mainPanel(uiOutput("tb1"))
                          )),
                 tabPanel("Interval",
                          sidebarLayout(sidebarPanel(
                            uiOutput("model_select"),
                            uiOutput("var1_select"),
                            uiOutput("rest_var_select"),
                            #uiOutput("testText1"), br(),
                            #textInput("Smooting Parameter min value", "Smooting Parameter max value", value = "")                        
                            sliderInput("range", "Smooth Parameter range:",min = 0, max = 1000, value = c(0,100)),
                            downloadButton('downloadData', 'Download')
                          ),
                          mainPanel(helpText("Selected variables and Fitted values"),
                                    verbatimTextOutput("other_val_show")))),
                 tabPanel("Model Summary", verbatimTextOutput("summary")), 
                 tabPanel("Scatterplot", plotOutput("scatterplot"))#, # Plot
                 #tabPanel("Distribution", # Plots of distributions
                 #fluidRow(
                 #column(6, plotOutput("distribution1")),
                 #column(6, plotOutput("distribution2")))
                 #)             
                 ,inverse = TRUE,position="static-top",theme ="bootstrap.css"))
server<-function(input,output) { 
  data <- reactive({
    lower <- input$range[1]
    upper <- input$range[2]
    file1 <- input$file
    if(is.null(file1)){return()} 
    read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)

  })  
  output$table <- renderTable({
    if(is.null(data())){return ()}
    data()
  })
  output$tb1 <- renderUI({
    tableOutput("table")
  })
  #output$model_select<-renderUI({
  #selectInput("modelselect","Select Algo",choices = c("Reference Interval"="Model")) 
  #})
  output$var1_select<-renderUI({
    selectInput("ind_var_select","Select Independent Variable", choices =as.list(names(data())),multiple = FALSE)
  })
  output$rest_var_select<-renderUI({
    checkboxGroupInput("other_var_select","Select Dependent Variable",choices =as.list(names(data()))) #Select other Var
  })
  output$other_val_show<-renderPrint({
    input$other_var_select
    input$ind_var_select
    f<-data()
    lower <- input$range[1]
    upper <- input$range[2]
    library(caret)
    library(quantregGrowth)
    dep_vars    <- paste0(input$ind_var_select, collapse = "+")
    after_tilde <- paste0("ps(", dep_vars, ", lambda = seq(",lower,",",upper,",l=100))")
    dyn_string  <- paste0(input$other_var_select, " ~ ", after_tilde)
    Model<-quantregGrowth::gcrq(as.formula(dyn_string),tau=c(0.025,0.975), data=f)
    temp <- data.frame(Model$fitted)
    gr <- cbind(f, temp)
    print(gr)
  })

output$downloadData <- downloadHandler(    
  write.csv(gr, file, row.names = FALSE)
  )
}
shinyApp(ui=ui,server=server)

server您在renderPrint函数的作用域内定义gr,因此downloadHandler无法使用它。您应该将gr定义为该函数之外的某个响应值。这样,当您在renderPrint函数中分配gr时,整个程序作用域都可以访问它


将来,提供您收到的任何错误消息的文本会很有帮助-它们通常对解决问题非常有帮助。

您在renderPrint函数的作用域内定义gr,因此downloadHandler无法使用它。您应该将gr定义为该函数之外的某个响应值。这样,当您分配t在renderPrint函数中,程序的整个范围都可以访问它


将来,提供您收到的任何错误消息的文本都会很有帮助,因为它们通常对解决问题非常有帮助。

如果不提供详细信息,很难完全回答这个问题,但以下是我将尝试的:

  • renderPrint
  • 下载处理程序中使用
    gr()
  • 重写
    downloadHandler
    以包含
    内容
    文件名
    参数
  • 下面是一个与您的应用程序具有相同逻辑的简单示例,即创建一个可打印(
    renderPrint
    )和可下载(
    downloadHandler
    )的反应式数据帧

    库(闪亮)
    
    ui没有答案很难完全回答这个问题,但以下是我将尝试的:

  • renderPrint
  • 下载处理程序中使用
    gr()
  • 重写
    downloadHandler
    以包含
    内容
    文件名
    参数
  • 下面是一个与您的应用程序具有相同逻辑的简单示例,即创建一个可打印(
    renderPrint
    )和可下载(
    downloadHandler
    )的反应式数据帧

    库(闪亮)
    用户界面