基于上载文件的变量或R中的默认数据集的数据分析

基于上载文件的变量或R中的默认数据集的数据分析,r,shiny,shiny-server,R,Shiny,Shiny Server,我想制作一个闪亮的应用程序,用户可以上传自己的rda/rds文件或使用默认数据集。输入选择将根据他们想要使用的是向下数据还是默认数据而改变 例如,在我的代码中,我希望mtbSelection的选项根据conditionalPanel上的值而改变 我在理解如何在服务器函数中加载.rda/.rds文件时遇到问题,我不确定updateSelectInput为什么不起作用。任何帮助都将不胜感激 library(shiny) library(shinythemes) ui <- fluidPage

我想制作一个闪亮的应用程序,用户可以上传自己的rda/rds文件或使用默认数据集。输入选择将根据他们想要使用的是向下数据还是默认数据而改变

例如,在我的代码中,我希望mtbSelection的选项根据conditionalPanel上的值而改变

我在理解如何在服务器函数中加载.rda/.rds文件时遇到问题,我不确定updateSelectInput为什么不起作用。任何帮助都将不胜感激

library(shiny)
library(shinythemes)

ui <- fluidPage(
  theme = shinytheme("paper"),
  checkboxInput("default_data", "Would you like to use default datasets?", value = TRUE),

  conditionalPanel(condition = "input.default_data == true",
                   selectizeInput(inputId = "mtb2", label = "Please choose a metabolomic dataset",
                                  choices = "mtb2",
                                  options = list(placeholder = 'Select a default metabolomic file below',onInitialize = I('function() { this.setValue(""); }'))
                   ),
                   selectizeInput(inputId = "geneExp2", label = "Please choose a transcriptome dataset",
                                  choices = "geneExp2",
                                  options = list(placeholder = 'Select a default transcriptome file below',onInitialize = I('function() { this.setValue(""); }'))
                   )
  ),
  conditionalPanel(condition = "input.default_data == false",
                   fileInput(inputId = "file_mtb", label = "Please upload a metabolomic dataset",
                             multiple = FALSE, accept = c('.RData', '.rda', '.rds'), placeholder = "  No file selected"
                   ),
                   fileInput(inputId = "file_ge", label = "Please upload a transcriptome dataset",
                             multiple = FALSE, accept = c('.RData', '.rda', '.rds'), placeholder = "  No file selected"
                   )


  ),

  selectInput("mtbSelection", strong("Select a metabolite of interest"), choices = "",
              multiple = FALSE)

)

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

  UploadMtbData <- reactive({
    infile <- input$file_mtb
    if (is.null(infile)){
      return()
    } else {
      return(readRDS(infile$datapath))
    }
  })

  observe({
    if (is.null(input$file_mtb)) #makes sure that the uploaded file is not null
      return()

    obj<-switch(input$file_mtb,
                 mtb2,
                 infile)

    var.opts <- colnames(obj)

    updateSelectInput(session, "mtbSelction", choices = var.opts)
  })



}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinythemes)

uiUpdate:我更新了if语句。非常重要的是,由于输入错误,updateSelectInput无法工作! 下面是生成我使用的虚拟数据的代码:

data(cars)
saveRDS(cars,'cars.rds')
我建议使用以下服务器代码(rest可以保持原样):


serverUpdate:我更新了if语句。非常重要的是,由于输入错误,updateSelectInput无法工作!
下面是生成我使用的虚拟数据的代码:

data(cars)
saveRDS(cars,'cars.rds')
我建议使用以下服务器代码(rest可以保持原样):


server我用上面的服务器代码再次运行了该应用程序,但在“66:stop,65:readRDS”上出现了“警告:readRDS中的错误:错误的'file'参数”。有没有关于如何解决这个问题的线索?感谢上面的服务器代码^^我更新了代码,现在应该可以工作了,并添加了虚拟数据CreationAnk,谢谢!目前,我只是使用全局环境中的一个数据集作为默认数据集。如何将其预加载到Shiny中,以供在其全局环境中没有数据集的用户使用?那么,在您的评论“#在这里加载您的数据”后面应该有什么代码呢?提前谢谢!!您是否计划发布应用程序,即用户将通过web使用该应用程序?或者您想分发应用程序文件,用户将通过R/RStudio启动应用程序?您只需将默认数据集保存并作为txt/csv或RDS数据分发,然后执行以下操作:
readRDS('cars.RDS')
read.table('cars.csv')
如果要发布应用程序,我该怎么办?可以在我的大学服务器上访问该应用程序。我使用上述服务器代码再次运行了该应用程序,但在“66:stop,65:readRDS”上出现了“警告:readRDS中的错误:错误的'file'参数”。有没有关于如何解决这个问题的线索?感谢上面的服务器代码^^我更新了代码,现在应该可以工作了,并添加了虚拟数据CreationAnk,谢谢!目前,我只是使用全局环境中的一个数据集作为默认数据集。如何将其预加载到Shiny中,以供在其全局环境中没有数据集的用户使用?那么,在您的评论“#在这里加载您的数据”后面应该有什么代码呢?提前谢谢!!您是否计划发布应用程序,即用户将通过web使用该应用程序?或者您想分发应用程序文件,用户将通过R/RStudio启动应用程序?您只需将默认数据集保存并作为txt/csv或RDS数据分发,然后执行以下操作:
readRDS('cars.RDS')
read.table('cars.csv')
如果要发布应用程序,我该怎么办?它可以在我的大学服务器上访问