R Shiny:将反应数据集存储到列表中并通过单选按钮选择访问它们

时间:2016-06-25 01:31:52

标签: r shiny

我会保持这么简单。我正在构建一个闪亮的应用程序,从文件中加载数据,然后创建数据集。然后可以处理该数据集,从而产生另一个数据集。

我希望我的应用程序要做的是存储第一个数据集,每次创建新数据集时都要存储它。根据已保存数据集的列表,然后将创建radiobuttons UI,以便用户能够选择要使用的数据集。

问题是,当我运行应用程序并加载文件(创建第一个数据集)时,UI应该出现的位置显示错误:'Error: subscript out of bounds'并且如果我尝试将函数应用于当前数据集(dataset.current())它说数据集是NULL,这当然意味着我的代码没有按照它应该做的那样。

应用程序中的其他所有内容都在工作(例如,从文件创建数据集)。

任何帮助将不胜感激! :)

以下是server.R脚本中的一些代码(仅限重要部分):

(...)
#list to store the datasets
datasets.list = list()

#adds first dataset created to the list
observe({
  if(length(datasets.list) < 1 & !is.null(dataset())){
    datasets.list[['dataset()']] = dataset()
  }
})

#renders the UI according to the stored datasets
output$datasets1 <- renderUI({
   radioButtons('datasets', 'Selected dataset:', choices = names(datasets.list[]))
})

#the current dataset the user is working with according to the selection
dataset.current <- reactive ({
   if (length(datasets.list) > 0 & !is.null(dataset())){
      return(datasets.list[[input$datasets]])
   }
})
(...)  

#(e.g.) Applying background correction to the current dataset, creating another one
dataset.bg <- reactive({
   input$preprocess
   isolate({
     if (!is.null(dataset()) & input$pMethods == 'bgCor') {
        return (data_correction(dataset.current(),"background"))
     }
   })
})

#Add created dataset to list
observe({
   if(!is.null(dataset.bg())){
      datasets.list[['dataset.bg()']] = dataset.bg()
    }
})

0 个答案:

没有答案